我的web應用程序中存在嚴重問題。我正在使用POI api通過java代碼寫入excel。使用JAVA創建Excel文件:工作簿中已經包含一個這個名字的表格
使用Java Main方法(僅工作一次)運行正常。但是,當我嘗試再次執行我的應用程序有以下異常:下面我的代碼的
Message: The workbook already contains a sheet of this name
StackTrace: java.lang.IllegalArgumentException:
The workbook already contains a sheet of this name
at org.apache.poi.xssf.usermodel.XSSFWorkbook.createSheet(XSSFWorkbook.java:767)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.createSheet(XSSFWorkbook.java:108)
關注部分:
public class ReportGenerator {
private Workbook wb = new XSSFWorkbook();
public void generateReport(Map<String, Node> nodes,
String reportOption) throws Exception {
this.FILENAME = getFilePath(DIRECTORY_TEMPORARY_REPORT);
export(FILENAME);
new Chart(FILENAME, this.reportOption);
wb.close();
}
//export data to excel file
public void export(String pathname) throws IOException, ParseException {
if(this.reportOption.equals("MGWSCC")){
exportMgwTop();
exportMgwMethodology();
exportRelease();
}else if(this.reportOption.equals("MSCSCC")){
exportMscTop();
exportMscMethodology();
exportRelease();
}else if (reportOption.equals("MSCVLR")){
exportMscTop();
exportVlrTop();
exportMscMethodology();
exportRelease();
}
FileOutputStream fileOut = new FileOutputStream(new File(pathname));
wb.write(fileOut);
fileOut.close();
vlrPeaks.delete(0, vlrPeaks.length());
topValues.delete(0, topValues.length());
raw.delete(0, raw.length());
vlrRawData.delete(0, vlrRawData.length());
}
其工作正常,但只有一次......當我嘗試執行再次這個代碼我有上面的例外。
感謝您的幫助
所以,你跑了一次,並創造了該名稱的工作簿。然後再運行一次,該名稱已經存在,您需要刪除它並重新運行,或者在每次運行時創建唯一的名稱。 – user123