1、java 利用 jxl 工具包操作 Excel 文件2009-11-27 13:00简单讲解使用操作 Excel 的常用第三方工具包 jxl 来实现对 Excel 文件的读写。我们先看一下读的操作:Java 代码 1. /* 2. * 读 3. * param file 欲读取的 Excel 文件的路径 4. * return 5. * throws Exception 6. */ 7. public static String read(File file) throws Exception 8. StringBuffer sb = new StringBuffer(); 9. 10. Wo
2、rkbook wb = null; 11. try 12. / 获取工作簿对象 13. wb = Workbook.getWorkbook(file); 14. if (wb != null) 15. / 获取工作簿对象就可以获取工作簿内的工作表对象 16. Sheet sheets = wb.getSheets(); 17. if (sheets != null isheets.length;i+) 20. / 获取该工作表内的行数 21. int rows = sheetsi.getRows(); 22. / 遍历行 23. for (int j=0;jrows;j+) 24. / 获取当
3、前行的所有单元格 25. Cell cells = sheetsi.getRow(j); 26. if (cells != null kcells.length;k+) 29. / 获取当前单元格的值 30. String cell = cellsk.getContents(); 31. / 缩进 32. sb.append(cell + “t“); 33. 34. sb.append(“tn“); 35. 36. 37. sb.append(“tn“); 38. 39. 40. System.out.println(“成功读取了:“ + file + “n“); 41. 42. catch
4、(Exception e) 43. System.out.println(e.getMessage(); 44. finally 45. wb.close(); 46. 47. return sb.toString(); 48. 方法的返回类型是一个 String,我定义了一个 StringBuffer 对象,大家知道StringBuffer 上的主要操作是 append 和 insert 方法,可以重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端,这样的话我们在接
5、受返回值的时候就可以方便的取到被转换成 String 类型的数据了。首先我们通过传入的欲读取文件路径,获取工作簿对象,获取工作簿对象之后,我们就可以轻而易举的取到该工作簿内的所有的工作表了,我们声明一个工作表类型的数组:Sheet sheets = wb.getSheets()以便遍历得到每个工作表内的行数,之后就是行内的单元格,单元格再到单元格内的值,整个步骤都是按从大到小的顺利来的,可以说一气呵成,短短的几个循环,搞定。接下来我们看写的操作:Java 代码 1. /* 2. * 写 3. * param fileName 被写入的 Excel 文件的路径 4. * param sheetN
6、ame 被写入的 Excel 文件的工作表 5. * param location 被写入的 Excel 文件的工作表位于工作簿的位置 6. * throws Exception 7. */ 8. public static void write(String fileName, String sheetName, int location) throws Exception 9. WritableWorkbook wwb = null; 10. Label label = null; 11. 12. try 13. / 创建可写入的工作簿对象 14. wwb = Workbook.creat
7、eWorkbook(new File(fileName); 15. if (wwb != null) 16. / 在工作簿里创建可写入的工作表,第一个参数为工作表名,第二个参数为该工作表的所在位置 17. WritableSheet ws = wwb.createSheet(sheetName, location); 18. if (ws != null) 19. /* 添加表结构 */ 20. / 行 21. for (int i=0;i5;i+) 22. / 列 23. for (int j=0;j5;j+) 24. / Label 构造器中有三个参数,第一个为列,第二个为行,第三个则为单
8、元格填充的内容 25. label = new Label(j, i, “第“+(i+1)+“行,“ + “第“+(j+1)+“列“); 26. / 将被写入数据的单元格添加到工作表 27. ws.addCell(label); 28. 29. 30. / 从内存中写入到文件 31. wwb.write(); 32. 33. System.out.println(“路径为:“ + fileName + “的工作簿写入数据成功!“); 34. 35. catch (Exception e) 36. System.out.println(e.getMessage(); 37. finally 38
9、. wwb.close(); 39. 40. 我们看到在方法首行定义了一个 WritableWorkbook 对象,WritableWorkbook 实际上就是一个写工作簿对象,同样我们要先获取一个工作簿,传入的文件路径,将欲读取的文件赋给 WritableWorkbook 对象,这样我们就可以获取工作簿内的工作表了,得到工作表就好办了,我们通过调用 WritableWorkbook 对象的createSheet()方法,传入工作表名和该表的所在位置,成功得到工作表后就开始在该工作表内添加表结构,这里我写的是五行五列,可以根据自己的实际要求改一下就 OK,那么 Label 是一个什么东西呢?L
10、abel 实际上就是一个填充单元格的对象,通过指定的行和列及需要填充的内容,最后将被写入数据的单元格添加到工作表中就大功告成了。最后一步调用 WritableWorkbook 的 write()方法将写入内存的数据写入到文件即可。Over!下面是测试类:Java 代码 1. package org.yt.jxl.excelDemo; 2. 3. import java.io.File; 4. 5. import jxl.Cell; 6. import jxl.Sheet; 7. import jxl.Workbook; 8. import jxl.write.Label; 9. import
11、jxl.write.WritableSheet; 10.import jxl.write.WritableWorkbook; 11. 12./* 13.* 执行对 Excel 文件的读写操作 14.* author 袁通 15.*/ 16.public class ExcelDemo 17. public static void main(String args) 18. /* 测试读取(注意:文件路径中的盘符 D:/,注意斜杠不要写成反斜杠“) */ 19. / 如果不存在该文件,返回空并抛出异常 20. /*File file = new File(“D:/testRead.xls“);
12、21. try 22. System.out.println(read(file); 23. catch (Exception e) 24. System.out.println(e.getMessage(); 25. */ 26. /* 测试写入(注意:如果进程中正在运行被写入的文件,将抛出异常)*/ 27. try 28. / 如果不存在该文件,程序将新建一个同名文件 29. write(“D:/testWrite.xls“, “Sheet1“, 0); 30. catch (Exception e) 31. System.out.println(e.getMessage(); 32. 33.