2017-10-17 109 views
1
FileInputStream file = new FileInputStream("/file/path/report.xlsx"); 
XSSFWorkbook wb = new XSSFWorkbook(file); --!ERROR LINE!-- 

2行目にエラーが表示されます。私はZipSecureFile.setMinInflateRatio(0.009)を加えjava.io.IOException:ZIPエントリーの読み込みに失敗しました

Error reading Excel .XLSX with Apache POI

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 

;:私はこのようなさまざまなオンラインリソースを見て

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

それはそれはすべてのヘルプやガイダンスが高く評価されているのと同じエラーに

を投げ始め、しばらくの間、うまく働きました。

+0

、何が起こりますか? – Gagravarr

+0

@Gagravarr私はファイルを信頼しますが、チェックを無効にする方法はありますか? like、ZipSecureFile.setMinInflateRatio(-1.0d); ? – Chid

+0

IIRCでは、チェックを無効にするために '0'の比率を設定できますが、ファイルを信頼する場合にのみ行います! – Gagravarr

答えて

2

以下の行を追加すると、私のトリックになりました。

ZipSecureFile.setMinInflateRatio(-1.0d); 

コードは次のようになります。あなたは、ファイルを信頼する場合はあなたがずっと後の比率を置けば

FileInputStream file = new FileInputStream("/file/path/report.xlsx"); 
ZipSecureFile.setMinInflateRatio(-1.0d); 
XSSFWorkbook wb = new XSSFWorkbook(file); 
関連する問題