標籤:
最近在研究利用sax讀取excel大檔案時,出現了以下的錯誤:
java.lang.IllegalStateException: Zip File is closed
at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45)
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:161)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:662)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:223)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:186)
at com.speed.excel.Excel2007Reader.process(Excel2007Reader.java:80)
要是按字面意思來看,是Zip檔案關閉了,其實不然,這是由於在讀取excel代碼時將檔案目錄E:\\taskTemplate.xls(正確的excel2003格式)寫成了E:\\taskTemplate.xlsx,造成的結果,於是好奇的又試了一下將原本存在的
E:\\建立 Microsoft Excel 工作表.xlsx檔案改成了E:\\建立 Microsoft Excel 工作表.xls,此時報的錯變成了
java.io.FileNotFoundException: E:\建立 Microsoft Excel 工作表.xls (系統找不到指定的檔案。),
所以,在處理兩種excel讀取時一定要注意,因為兩種讀取excel方式不一致造成檔案名稱寫錯,報出的異常也會不同,切不可望文生義。
java.lang.IllegalStateException: Zip File is closed