最近在研究利用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方式不一致造成文件名写错,报出的异常也会不同,切不可望文生义。