java操作excel,用的jxl,帮忙看看
- Java code
public void Update() { boolean isChecked = false; int x, y; String id = null; String number = null; try { // Excel获得文件 // Excel获得文件 Workbook wb = Workbook.getWorkbook(new File("T.xls")); // 打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book = Workbook.createWorkbook(new File("T.xls"), wb); // 添加一个工作表 // WritableSheet sheet = book.createSheet("第二页", 1); WritableSheet sheet = book.getSheet(0); // 得到当前工作表的列数 int colNum = sheet.getColumns(); for (int j = 0; j < colNum; j++) { // 得到当前列的所有单元格 Cell[] cells = sheet.getColumn(j); if (cells.length > 1) { isChecked = true; continue; } else { flag = true;// while (flag) { id = getId(); number = this.getNumber(id); // 对每个单元格进行循环 for (int k = 1; k < cells.length - 1; k++) { System.out.println(id); // 读取当前单元格的值 String cellValue = cells[k].getContents(); if ((cellValue == null || cellValue .equals("")) && cellValue.equals(number)) { Label lc = new Label(k, j, "Checked-in"); sheet.addCell(lc); book.write(); System.out.println("添加成功"); // k = cells.length; } } } } }book.close(); } catch (Exception e) { flag = false; System.out.println(e); } }总是有错,执行这个后xls文件就问0kb了,并且不能打开文件
[解决办法]
jxl没用过,而且停止更新了。。可以试试POI。
你的问题可以去网上找个例子,对比以下就知道那错了
[解决办法]
book.write();
从循环里拿出来,在close之前write一次就行。
[解决办法]
楼上正解
[解决办法]
你调用的方式有问题,给你一个使用jxl.jar的源码吧:java读取excel文档
这个实例我经过测试没有一点问题可以直接拿来使用,希望对你有帮助,不过我建议你有空看一下POI,这个功能会更强一些