[英]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.