将信息附加到现有的Excel文件时发生java.lang.NullPointerException

我试图追加信息到现有的Excel文件,但我不断收到java.lang.NullPointerException。 请参阅下面的代码和例外信息。

代码

private WritableSheet appendingSheet; private static File report; public void AppendToDoc (String path) throws IOException, WriteException, BiffException { this.inputFile = path; report = new File(inputFile); Workbook appendingWorkbook = Workbook.getWorkbook(new File(inputFile)); WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"),appendingWorkbook); appendingSheet = copy.getSheet("Sheet 1"); } public void WriteToDoc (int option, String testName, String execDate, String time, boolean status) throws RowsExceededException, WriteException, IOException, BiffException{ int startingRow = NumOfRows(this.inputFile) + 1; //I have a function which finds the number of existing rows in the existing document. It works. Label label = new Label(1, startingRow, "hello", times); appendingSheet.addCell(label); } 

调用代码

 AppendToDoc("C:/Users/smith/ExcelTestFile.xls"); WriteToDoc(2, "This is a test", "executed", timeStamp, true); 

exception消息

线程“main”中的exception在jxl.write.biff.Styles.getFormat(Styles.java:214)处的jxl.write.biff.CellValue.addCellFormat(CellValue.java:468)处于jxl.write处的java.lang.NullPointerException。在jxl.write.biff.WritableSheetImpl.addCell(WritableSheetImpl.java:1199)位于jxl.write.biff.LabelRecord.setCellDetails(LabelRecord.java:216)处的bOff.CellValue.setCellDetails(CellValue.java:282)位于ExcelOperations.WriteToDoc (ExcelOperations.java:149)在ChequeImage.main(ChequeImage.java:174)

:exception似乎发生在行“appendingSheet.addCell(label);”。

谢谢您的帮助。

编辑1 :下图显示了“appendingSheet.addCell(label)”执行前的appendingSheet的内容。 我不完全确定它代表什么,但它似乎并不是空的。 在这里输入图像说明

我不能说我对比夫很熟悉,但是POI似乎也以类似的方式工作。 看起来您已经创build了一个工作簿:

WritableWorkbook copy = Workbook.createWorkbook(new File(“output.xls”),appendingWorkbook);

但是,您不要创build您参考的工作表:

appendingSheet = copy.getSheet(“Sheet 1”);

我猜你正在得到一个NPE,因为“copy.getSheet(”Sheet 1“);” 返回null。 与在Excel中简单打开工作簿不同的是,API可能不会为您创build该默认工作表。 我打赌你必须先创build表单对象,然后才能添加单元格。

所以…我已经设法解决了这个问题。

我无法真正解释为什么,但是在我将“ copy ”和“ appendingWorkbook ”(不是appendSheet)重新定义为全局variables而不是本地的AppendToDoc()之后 。 以及添加行copy.write() ,程序工作…

感谢大家的帮助。 对此,我真的非常感激。