You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XSSFWorkbook加载Excel遇InputStreamStatistics兼容错误,求解决方案

问题

尝试使用以下代码将Excel文件加载到POI Workbook中:

Workbook workbook = new XSSFWorkbook(file.getAbsolutePath());

但出现如下报错:

[main] WARN org.apache.poi.openxml4j.opc.OPCPackage - Unable to call close() on a package that hasn't been fully opened yet
Exception in thread "main" java.lang.IllegalArgumentException: InputStream of class class java.util.zip.InflaterInputStream is not implementing InputStreamStatistics.
 at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:65)
 at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:157)
 at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:36)
 at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getInputStream(ZipFileZipEntrySource.java:63)
 at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:282)
 at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:743)
 at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:248)
 at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:177)
 at org.apache.poi.openxml4j.opc.OPCPackage.open(POIXMLDocument.java:88)
 at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:332).

已将poi-ooxml升级至5.2.2、commons-compress升级至1.21,但问题仍存在,请问是否有版本兼容问题或其他解决办法?

解决方案
  • 改用FileInputStream构造Workbook
    替换原有的文件路径构造方式,直接使用FileInputStream作为输入源,避免内部流包装逻辑引发的类型不兼容问题:

    try (FileInputStream fis = new FileInputStream(file)) {
        Workbook workbook = new XSSFWorkbook(fis);
        // 执行后续Excel操作
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    建议使用try-with-resources语法,确保流资源自动释放。

  • 排查依赖冲突
    通过构建工具的依赖树命令检查是否存在旧版本依赖:

    • Maven:执行mvn dependency:tree
    • Gradle:执行gradle dependencies
      重点查看是否有第三方库间接引入了低版本的commons-compress或POI组件,若存在需排除旧版本依赖,强制使用指定的最新版本。
  • 临时禁用Zip安全阈值检查
    若上述方法无效,可关闭POI的Zip膨胀比检查,绕过InputStreamStatistics的强制要求:

    ZipSecureFile.setMinInflateRatio(0.0);
    

    注意:此操作会降低文件安全性,仅在确认文件来源完全可信时使用。

  • 验证Excel文件完整性
    尝试用Office或WPS打开目标Excel文件,确认文件未损坏;也可换用已知正常的XLSX文件测试,排除文件本身的问题。

内容的提问来源于stack exchange,提问作者rishabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:30:38