前几天潜水时看到一篇关于介绍使用Java语言实现读写Excel文件的文章,感觉不太通俗易懂,终于按耐不住,决定自己动手简单讲解使用操作Excel的常用第三方工具包jxl来实现对Excel文件的读写。
我们先看一下读的操作:
/**
* 读
* @param file 欲读取的Excel文件的路径
* @return
* @throws Exception
*/
public static String read(File file) throws Exception {
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
// 获取工作簿对象
wb = Workbook.getWorkbook(file);
if (wb != null) {
// 获取工作簿对象就可以获取工作簿内的工作表对象
Sheet[] sheets = wb.getSheets();
if (sheets != null && sheets.length != 0) {
// 遍历工作簿内所有工作表
for (int i=0;i<sheets.length;i++) {
// 获取该工作表内的行数
int rows = sheets[i].getRows();
// 遍历行
for (int j=0;j<rows;j++) {
// 获取当前行的所有单元格
Cell[] cells = sheets[i].getRow(j);
if (cells != null && cells.length != 0) {
// 遍历单元格
for (int k=0;k<cells.length;k++) {
// 获取当前单元格的值
String cell = cells[k].getContents();
// 缩进
sb.append(cell + "\t");
}
sb.append("\t\n");
}
}
sb.append("\t\n");
}
}
System.out.println("成功读取了:" + file + "\n");
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
wb.close();
}
return sb.toString();
}
方法的返回类型是一个String,我定义了一个StringBuffer对象,大家知道StringBuffer上的主要操作是 append
和 insert
方法,可以重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append
方法始终将这些字符添加到缓冲区的末端,这样的话我们在接受返回值的时候就可以方便的取到被转换成String类型的数据了。首先我们通过传入的欲读取文件路径,获取工作簿对象,获取工作簿对象之后,我们就可以轻而易举的取到该工作簿内的所有的工作表了,我们声明一个工作表类型的数组:Sheet[] sheets = wb.getSheets()以便遍历得到每个工作表内的行数,之后就是行内的单元格,单元格再到单元格内的值,整个步骤都是按从大到小的顺利来的,可以说一气呵成,短短的几个循环,搞定。
接下来我们看写的操作:
/**
* 写
* @param fileName 被写入的Excel文件的路径
* @param sheetName 被写入的Excel文件的工作表
* @param location 被写入的Excel文件的工作表位于工作簿的位置
* @throws Exception
*/
public static void write(String fileName, String sheetName, int location) throws Exception {
WritableWorkbook wwb = null;
Label label = null;
try {
// 创建可写入的工作簿对象
wwb = Workbook.createWorkbook(new File(fileName));
if (wwb != null) {
// 在工作簿里创建可写入的工作表,第一个参数为工作表名,第二个参数为该工作表的所在位置
WritableSheet ws = wwb.createSheet(sheetName, location);
if (ws != null) {
/* 添加表结构 */
// 行
for (int i=0;i<5;i++) {
// 列
for (int j=0;j<5;j++) {
// Label构造器中有三个参数,第一个为列,第二个为行,第三个则为单元格填充的内容
label = new Label(j, i, "第"+(i+1)+"行," + "第"+(j+1)+"列");
// 将被写入数据的单元格添加到工作表
ws.addCell(label);
}
}
// 从内存中写入到文件
wwb.write();
}
System.out.println("路径为:" + fileName + "的工作簿写入数据成功!");
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
wwb.close();
}
}
我们看到在方法首行定义了一个WritableWorkbook 对象,WritableWorkbook 实际上就是一个写工作簿对象,同样我们要先获取一个工作簿,传入的文件路径,将欲读取的文件赋给WritableWorkbook 对象,这样我们就可以获取工作簿内的工作表了,得到工作表就好办了,我们通过调用WritableWorkbook 对象的createSheet()方法,传入工作表名和该表的所在位置,成功得到工作表后就开始在该工作表内添加表结构,这里我写的是五行五列,可以根据自己的实际要求改一下就OK,那么Label是一个什么东西呢?Label实际上就是一个填充单元格的对象,通过指定的行和列及需要填充的内容,最后将被写入数据的单元格添加到工作表中就大功告成了。最后一步调用WritableWorkbook 的write()方法将写入内存的数据写入到文件即可。Over!!!
下面是测试类:
package org.yt.jxl.excelDemo;
import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/**
* 执行对Excel文件的读写操作
* @author 袁通
*/
public class ExcelDemo {
public static void main(String[] args) {
/* 测试读取(注意:文件路径中的盘符D:/,注意斜杠不要写成反斜杠"\") */
// 如果不存在该文件,返回空并抛出异常
/*File file = new File("D:/testRead.xls");
try {
System.out.println(read(file));
} catch (Exception e) {
System.out.println(e.getMessage());
}*/
/* 测试写入(注意:如果进程中正在运行被写入的文件,将抛出异常) */
try {
// 如果不存在该文件,程序将新建一个同名文件
write("D:/testWrite.xls", "Sheet1", 0);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
分享到:
相关推荐
学习使用JXL读写EXCEL文件, 学习使用JXL读写EXCEL文件。
java利用jxl.jar包读取excel文件
NULL 博文链接:https://zhouyq.iteye.com/blog/272883
JAVA利用jxl读取Excel所需jar。 JAVA可以利用jxl简单快速的读取excel文件的内容。由于版本限制,只能读取97-03 xls格式的Excel。
jxl对下拉列表的读写操作以及相应的修改功能
JXL(Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。
常用java IO操作以及用jxl读写excel 工具源代码 此工具作用:把目录里面的文件旧的国际化key值换成新的国际化值。根据excel文件。
操作Excel文件(读取和生成)jxl和poi 详细实例
dom4j是一套非常优秀的java开源api,主要用于读写xml文档,具有性能优异、功能强大、和非常方便使用的特点。 另外xml经常用于数据交换的载体,像调用webservice传递的参数,以及数据做同步操作等等, 所以使用dom4j...
java读取Excel文件-jxl附件列表: ReadAndWriteExcel.java (5.52 KB) jxl.jar (688.03 KB) jxl读Excel文件.doc (88.50 KB)
JXL(Java操作Excel文件Oracle数据库)
jxl.jar包,以及网络读取Excel文件流所需jar包commons_fileupload,commons_io
包括POI和JXL两种方法读取EXCEL数据的工具类(传入文件或者文件路径直接调用)以及所需要的jar包
jxlapi和jar包 博文链接:https://dhl004.iteye.com/blog/1324644
jxl java读取、插入、删除、更新excel文件源代码 欢迎下载
问题:目前,无论是JXL还是POI,对Excel的操作都是比较原始的,用户无法使用这些框架代码直接读取Excle并相应相应的数据实体(Entity),也无法直接将数据实体写入到Excle文件中去。 本文章要介绍的是一个对JXL框架...
一个读取Excel文档,将数据存入map集合的方法
通过Jxl与poi读取和写入excel文件,并且区分2007和2003版的excel格式
Android读取Excel需要的jxl.jar文件,需要的可以下载使用。