记得刚开始工作的时候,老总让我把excel表格中的数据写入到数据库里边,
当时还没接触到像Navicat for MySQL这样的工具,搞了一天终于用最笨的办法,在excel后加一个insert字段,然后采用批量处理的方法来写入数据库,当时有一个傻X很牛哄哄的跟我说,,用得着这么麻烦吗?我们都是写程序搞定的,当我问他要这种程序的时候,人家跟我说,网上一大堆,后来在工作中发现,此人纯属装B,现为大家写出读excel表格中数据的方法
大家可做适当的调整,然后就可以实现用程序的方法把excel表格存在数据库中了
同时提供一个支持jar包
代码如下
package com.demo.excel;
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class ExcelUtils {
/**读取Excel文件的内容
* @param file 待读取的文件
* @return
*/
public static String readExcel(File file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++){
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
for(int j=0;j<rowNum;j++){
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
//对每个单元格进行循环
for(int k=0;k<cells.length;k++){
//读取当前单元格的值,并输出,仅用于试验
String cellValue = cells[k].getContents();
System.out.println(cellValue);
sb.append(cellValue+"\t");
}
}
sb.append("\r\n");
}
sb.append("\r\n");
}
}
//最后关闭资源,释放内存
wb.close();
return sb.toString();
}
/**生成一个Excel文件
* @param fileName 要生成的Excel文件名
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面开始添加单元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
/**搜索某一个文件中是否包含某个关键字
* @param file 待搜索的文件
* @param keyWord 要搜索的关键字
* @return
*/
public static boolean searchKeyWord(File file,String keyWord){
boolean res = false;
Workbook wb = null;
try {
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
return res;
} catch (IOException e) {
return res;
}
if(wb==null)
return res;
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
boolean breakSheet = false;
if(sheet!=null&&sheet.length>0){
//对每个工作表进行循环
for(int i=0;i<sheet.length;i++){
if(breakSheet)
break;
//得到当前工作表的行数
int rowNum = sheet[i].getRows();
boolean breakRow = false;
for(int j=0;j<rowNum;j++){
if(breakRow)
break;
//得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
boolean breakCell = false;
//对每个单元格进行循环
for(int k=0;k<cells.length;k++){
if(breakCell)
break;
//读取当前单元格的值
String cellValue = cells[k].getContents();
if(cellValue==null)
continue;
if(cellValue.contains(keyWord)){
res = true;
breakCell = true;
breakRow = true;
breakSheet = true;
}
}
}
}
}
}
//最后关闭资源,释放内存
wb.close();
return res;
}
/**往Excel中插入图片
* @param dataSheet 待插入的工作表
* @param col 图片从该列开始
* @param row 图片从该行开始
* @param width 图片所占的列数
* @param height 图片所占的行数
* @param imgFile 要插入的图片文件
*/
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
int height, File imgFile){
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
public static void main(String[] args) {
try {
//创建一个工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet imgSheet = workbook.createSheet("Images",0);
//要插入的图片文件
File imgFile = new File("D:/1.png");
//图片插入到第二行第一个单元格,长宽各占六个单元格
insertImg(imgSheet,0,1,6,6,imgFile);
workbook.write();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
以上代码可完全执行,不过前题是,你把支持的jar包加上,不然会报错,jar包己经上传了,
最不爽javaeye的就是下载东西非要注册,各位想学习的朋友可以去注册个javaeye帐号!
代码如有问题,请发送邮件至zhang7789@yahoo.com.cn
很多注释的说,你一定能看懂
分享到:
相关推荐
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
在Java编程中,有时我们需要处理来自不同文档格式的数据,例如从Word文档中提取表格内容,并将其转换成Excel文件。这通常涉及到使用Apache POI库,一个强大的API,用于读写Microsoft Office格式的文件,包括Word(....
### 利用Java操作Excel表格并将数据导入数据库 在现代软件开发中,处理电子表格文件(如Microsoft Excel)是一项常见的任务。特别是在企业级应用中,经常需要读取、写入Excel文件或将其中的数据批量导入数据库。...
当我们谈论“Java操作Excel表格”时,通常是指使用Java来读取、写入或处理Microsoft Excel文件,这在数据分析、报表生成或者数据交换等场景中非常常见。本主题将围绕Java如何与Excel交互进行深入探讨。 首先,Java...
在实际项目中,可以封装一个工具类,包含读取Excel、数据校验等功能,这样可以使代码更加整洁,复用性更高。 9. **性能优化** 大量数据的读取可能导致内存消耗过大,因此可以考虑分批读取或使用SXSSF(Streaming ...
在Java开发中,读取Excel数据并利用这些数据进行数据库建库建表以及生成Java实体类是一项常见的任务,尤其在数据导入、数据处理或者自动化测试等场景中。本篇文章将详细探讨如何使用Java来实现这一过程。 首先,...
在Java编程环境中,实现Excel表格的数据导入是一项常见的任务,尤其在数据处理、分析或系统集成时。本项目涉及的关键知识点包括数据库连接、操作数据库、导入Excel表格、界面设计以及进度条显示,这些都是Java开发中...
标题中的“直接读取Excel文件数据”指的是在Visual C++(简称VC)环境下,通过编程方式访问并解析Excel文件中的内容。通常,这涉及到使用Microsoft Office的自动化接口,如Microsoft Excel Object Library,或者使用...
1. **读取Excel数据**:首先,我们需要使用ArcGIS Engine中的`GeodatabaseFeatureClass`类或其他相关的数据读取组件,加载Excel文件中的表格数据。这通常涉及到对Excel文件的解析,获取到包含坐标信息的列。 2. **...
在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件通常用于存储和管理结构化的表格数据,而Java提供了一些库来帮助我们方便地访问这些数据。本篇将深入探讨如何使用Java...
5. **异步处理**:由于读取Excel文件可能会消耗大量资源和时间,为避免阻塞UI线程,开发者可能使用了Android的AsyncTask或者Handler/Looper机制来执行文件读取操作。 6. **数据解析与显示**:读取到Excel文件后,...
Java Web 数据库数据与 Excel 表格形式导入导出是指通过 Java Web 应用程序将数据库数据导入到 Excel 表格中,并实现数据的导出。该技术主要利用了 JXL(Java Excel API)和 POI(Apache POI)技术来实现数据的导入...
在本文档中,我们将详细介绍如何使用Java编写程序,将数据库中的数据以Excel表格的形式导出。这是通过操作Excel文件对象模型以及Java的数据库操作技术实现的。为了更好地理解本文所包含的知识点,需要掌握Java语言...
在Java编程环境中,将JSP表格中的数据导出到Excel文件是一种常见的需求,尤其是在数据分析、报表生成和数据交换等场景中。本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术包括Java Servlet、JSP以及...
2. **IDE选择**:推荐使用Eclipse或IntelliJ IDEA等集成开发环境,便于代码编写和调试。 3. **添加jxl库**:通过Maven或直接下载jar包的方式,在项目中引入`jxl.jar`文件。 #### 三、读取Excel文件 ```java import...
在给定的标题“C++读取Excel完整程序源代码”和描述中,我们可以推断这是一个关于如何在C++中读取Excel文件(可能是xls格式,适用于Excel 2003及以下版本)的示例代码资源。在这个场景下,我们将探讨几种常见的方法...
本示例“springboot将excel存入mysqldemo”是关于如何使用Spring Boot来读取Excel数据并将其存储到MySQL数据库中的实践教程。下面我们将详细探讨涉及的关键知识点。 1. **Spring Boot集成MyBatis**: - Spring ...
在IT行业中,处理数据是常见的任务之一,而Excel作为广泛使用的电子表格软件,其数据读取和处理功能在各种业务场景中尤为重要。本项目“读取Excel Demo&Servlet Demo”提供了一个实例,演示了如何利用Java技术栈实现...
本资源"应用源码之安卓读取Excel文件获取表格数据.zip"提供了一种方法来实现这一功能,主要适用于那些正在做JAVA ANDROID毕业设计或者希望深入代码学习的开发者。通过这个压缩包,你可以学习如何在Android应用中读取...
本篇文章将详细介绍如何使用 Java 实现删除 Excel 文件中的空行,这对于提高数据处理效率具有重要意义。 #### 一、准备工作 在开始编写代码之前,我们需要准备以下环境: - **Java 开发环境**:确保已经安装了 JDK ...