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了,并且不能打开文件

解决方案 »

  1.   

    jxl没用过,而且停止更新了。。可以试试POI。
       你的问题可以去网上找个例子,对比以下就知道那错了
      

  2.   

    book.write();从循环里拿出来,在close之前write一次就行。
      

  3.   

    恩,问题解决了,但是好像逻辑上有点错,我更新不了cell
      

  4.   

    你调用的方式有问题,给你一个使用jxl.jar的源码吧:java读取excel文档
    这个实例我经过测试没有一点问题可以直接拿来使用,希望对你有帮助,不过我建议你有空看一下POI,这个功能会更强一些