jexcelapi:jxl.jar的全称,一个方便java处理excel文件的包。
虽说不是最好的选择,但我个人觉得用来学习的话,这个工具包不错。
首先,先梳理一下我们需要处理的 excel 文件的特性。
excel文件的三个层次:1、源文件(.xls) 2、表(sheet) 3、单元格(cell)
对excel进行操作的话最重要的我觉得就是:新建、读取和修改。由于我是从读取数据切入的,就先说读取吧。
读取
在读取之前来熟悉一下需要使用到的工具:目标文件(.xls文件)、Workbook、Sheet、Cell
Workbook 使用来获取工作薄对象需要使用的类.
Sheet 和 Cell 是用来接收对应的 excel 文件的 Sheet 和 Cell的。
下面是演示代码:

1 public void readFile(String filePath) throws BiffException, IOException { 2 System.out.println("正在读取:" + filePath + "...\n"); 3 int columnNum, rowNum, x, y; 4 String mMap[][]; 5 6 Workbook wb = Workbook.getWorkbook(new File(filePath)); 7 Sheet sheet = wb.getSheet(0); 8 9 rowNum = sheet.getRows();// 排 10 columnNum = sheet.getColumns();// 列 11 12 mMap = new String[rowNum][columnNum]; 13 14 // sheet.getCell(columnNum, rowNum) 15 for (x = 1; x < rowNum; x++) { 16 for (y = 0; y < columnNum; y++) { 17 mMap[x][y] = sheet.getCell(y, x).getContents(); 18 } 19 } 20 21 for (x = 1; x < rowNum; x++) { 22 for (y = 0; y < columnNum; y++) { 23 System.out.print("[" + mMap[x][y] + "]"); 24 } 25 System.out.println(); 26 } 27 wb.close(); 28 System.out.println("\n读取:" + filePath + "完成."); 29 }
修改
修改之前的准备:WritableWorkbook,WritableCell,WritableSheet
看名字就能有所发现,无非就是添加了写的标识:Wirtable,使用上面基本上大同小异。
特别注释下:
Workbook wb = Workbook.getWorkbook(sourceFile); //创建目标文件对象 wb, sourceFile 为源文件
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb); //让目标文件转换为可写入对象 wwb , targetFile 为目标文件
这两句代码就是用来实现在原excel文件上进行修改,值得关注的就是源文件和目标文件的文件名一致相当于在源文件上修改,否则就是创建目标文件来装上修改后的数据。
演示代码:

1 public void updateFile(String filePath) throws BiffException, IOException, 2 RowsExceededException, WriteException { 3 System.out.println("正在写入:" + filePath + "...\n"); 4 int rowNum, x, y; 5 WritableCell targetCell; 6 String data[][] = getData(); 7 8 File file = new File(filePath); 9 Workbook wb = Workbook.getWorkbook(file); 10 WritableWorkbook wwb = Workbook.createWorkbook(file, wb); 11 WritableSheet sheet = wwb.getSheet(0); 12 13 targetCell = (WritableCell) sheet.getCell(0, 0); 14 if (targetCell.getContents().isEmpty()) { 15 sheet.addCell(new Label(0, 0, "ID")); 16 sheet.addCell(new Label(1, 0, "题目")); 17 sheet.addCell(new Label(2, 0, "答案")); 18 sheet.addCell(new Label(3, 0, "正确答案")); 19 20 for (x = 0; x < data.length; x++) { 21 sheet.addCell(new Label(0, x + 1, (x + 1) + "")); 22 for (y = 0; y < data[0].length; y++) { 23 sheet.addCell(new Label(y + 1, x + 1, data[x][y])); 24 } 25 } 26 27 } else { 28 rowNum = sheet.getRows(); 29 for (x = 0; x < data.length; x++, rowNum++) { 30 sheet.addCell(new Number(0, rowNum, rowNum)); 31 for (y = 0; y < data[0].length; y++) { 32 sheet.addCell(new Label(y + 1, rowNum, data[x][y])); 33 } 34 } 35 } 36 37 wwb.write(); 38 wb.close(); 39 wwb.close(); 40 System.out.println("\n写入:" + filePath + "完成."); 41 }
新建
如果修改会了的话新建必定没问题了。
使用Workbook.createWorkbook(new File(fileName));就能轻松创建一个excel文件了。
至于要如何操作就可以仿造修改和读取来操作源文件就行。
总结
这是小弟第一次以博客的形式来记录学习过程。希望看官在看过之后给点意见和建议,不对的地方也请看官不吝赐教。
这次由于只需求对excel文件进行简单的操作,所以就只学习到此,对图片和表格神马的都没还有具体学习,我想应该也差不多。对excel文件的读取学习比较顺利,在写入的时候出现了2小时的停滞不前,无法对源文件进行修改。此两小时中各种排查,各种修改,最后发现居然是excel源文件勾选上了“只读”属性...对此,希望各位看官在学习的时候注意下就好,也记录下来提醒自己学习的时候切忌“粗心大意”。
此次学习就此完结,项目开发也有了进展,项目的成果会陆续发布出来,感兴趣的朋友可以关注下,嘿嘿。