[英]Jxl NullPointerException to do with workbook.close() method
我正在尝试写入excel文件,但是遇到了两个问题。 以下是相关代码:
public ExcelFormWriter() throws IOException, WriteException{
setOutputFile("DataAnalysis.xls");
File file = new File(inputFile);
WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
workbook = Workbook.createWorkbook(file, wbSettings);
workbook.createSheet("RawData", 0);
}
public void addLabel(int column, int row, String s) throws WriteException, RowsExceededException, IOException {
excelSheet = workbook.getSheet(0);
createLabel(excelSheet);
Label label = new Label(column, row, s, times);
excelSheet.addCell(label);
workbook.write();
workbook.close();
}
在另一个类中,我这样称呼它:
ExcelFormWriter test = new ExcelFormWriter();
int row = 1;
for (int i = 100; i > 0; i--){
test.addLabel(0,row,getDateNDaysAgo(i));
row++;
}
如果我像这样运行它,它将在Excel文件中写入第一行,然后返回NullPointerException。
我发现如果我注释掉'workbook.close()',它将在for循环中运行并且构建成功完成,但是当我查看excel文件时,实际上什么也没写。
我对写入电子表格并不完全熟悉,因此我的代码中可能存在一个基本缺陷,例如放置在错误的位置。 感谢您提供任何答案,但请在您的答案中具体说明,因为我对这段代码感到困惑,而且我不知道该做什么。
对于将来对这些东西的诊断/故障排除的建议也将不胜感激。
UPDATE
我已经提出了一种单独的方法来关闭工作簿。 谢谢你的提示。 但是,第二个问题仍然存在。 仅写入电子表格的第一行。
public void close() throws IOException, WriteException{
workbook.close();
}
这就是我所谓的方法。 也许有问题吗?
int row = 1;
for (int i = 100; i > 0; i--){
test.addLabel(0,row,getDateNDaysAgo(i));
row++;
}
test.close();
您必须将workbook.close()语句放在addLabel函数之外,因为您是在for循环的第一个迭代中调用它,关闭工作簿,然后在下一个迭代中尝试不再写入现有工作簿。 添加closeWorkbook函数或由吸气剂调用工作簿,并在编写单元格后将其关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.