我需要使用 JExcel 将内容附加到现有的 excel 文件中。
我正在尝试以下方法:
从现有工作簿中读取
workbook = Workbook.getWorkbook(new File(errorFilePath));
从现有工作簿创建可写工作簿到临时文件
if (!tempFile.exists()) { tempFile.getParentFile().mkdirs(); tempFile.createNewFile(); } newCopy = Workbook.createWorkbook(tempFile, workbook); excelSheet = newCopy.getSheet(0);
写入可写工作簿(次是可写单元格格式变量)
Label label; label = new Label(column, row, stringData, times); excelSheet .addCell(label);
关闭现有和可写工作簿-> 在 finally 块中删除现有工作簿-> 将临时文件名重命名为现有(现已删除)工作簿名称
finally { if (null != newCopy) { newCopy.write(); newCopy.close(); } if (null != workbook) { workbook.close(); } if (null != errorFile && errorFile.exists()) { errorFile.delete(); } if (null != tempFile) { tempFile.renameTo(new File(errorFilePath)); } }
问题是第一次运行一切正常(无需重新部署)。但是,每当我更改一些 Java 代码并且重新部署 Web 应用程序时,我在关闭新创建的工作簿(写入后)时会收到一个空指针异常。
我得到以下堆栈跟踪(源自 newCopy.write() 行)
java.lang.NullPointerException
at jxl.write.biff.CellValue.getData(CellValue.java:259)
at jxl.write.biff.LabelRecord.getData(LabelRecord.java:141)
at jxl.biff.WritableRecordData.getBytes(WritableRecordData.java:71)
at jxl.write.biff.File.write(File.java:147)
at jxl.write.biff.RowRecord.writeCells(RowRecord.java:329)
at jxl.write.biff.SheetWriter.write(SheetWriter.java:479)
at jxl.write.biff.WritableSheetImpl.write(WritableSheetImpl.java:1514)
at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:950)
Java版本:1.6
JExcel 版本:2.6.10
Windows 7的