java.io.IOException:无法读取zip条目源

FileInputStream file = new FileInputStream("/file/path/report.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(file); --!ERROR LINE!-- 

我在第二行发生错误。 我查看了不同的在线资源,例如:

使用Apache POI读取Excel .XLSX时出错

 Exception in thread "main" java.io.IOException: Failed to read zip entry source at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:106) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:342) at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:285) at test.test.main(test.java:48) Caused by: java.io.IOException: Zip bomb detected! The file would exceed the max. ratio of compressed file size to the size of the expanded data. This may indicate that the file is used to inflate memory usage and thus could pose a security risk. You can adjust this limit via ZipSecureFile.setMinInflateRatio() if you need to work with files which exceed this limit. Counter: 1483367, cis.counter: 14796, ratio: 0.009974605070761314Limits: MIN_INFLATE_RATIO: 0.01 at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.advance(ZipSecureFile.java:257) at org.apache.poi.openxml4j.util.ZipSecureFile$ThresholdInputStream.read(ZipSecureFile.java:214) at java.io.FilterInputStream.read(Unknown Source) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource$FakeZipEntry.<init>(ZipInputStreamZipEntrySource.java:132) at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.<init>(ZipInputStreamZipEntrySource.java:56) at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:99) ... 4 more 

我加了ZipSecureFile.setMinInflateRatio(0.009);

  FileInputStream file = new FileInputStream("/file/path/report.xlsx"); ZipSecureFile.setMinInflateRatio(0.009); XSSFWorkbook wb = new XSSFWorkbook(file); 

它运行良好一段时间,然后它开始抛出同样的错误

任何帮助或指导表示赞赏。

添加下面的行对我来说是个诀窍。

 ZipSecureFile.setMinInflateRatio(-1.0d); 

代码如下所示:

 FileInputStream file = new FileInputStream("/file/path/report.xlsx"); ZipSecureFile.setMinInflateRatio(-1.0d); XSSFWorkbook wb = new XSSFWorkbook(file);