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

Apache POI读取Word报UnsupportedZipFeatureException的解决方法

解决Apache POI解析Word时的UnsupportedZipFeatureException异常

问题原因

你的Word文档本质是ZIP压缩包,其中的图片条目使用了数据描述符特性,但Apache POI默认的ZIP解析逻辑中,allowStoredEntriesWithDataDescriptor参数默认是false,不允许这种格式,因此抛出异常。

解决方案

手动构建支持该特性的ZipArchiveInputStream,再以此打开OPCPackage,最后初始化XWPFDocument,绕过默认的构造限制。

完整代码示例

import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.utils.CharsetUtil;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.InputStream;

// 自定义解析方法,支持带数据描述符的Word文档
public XWPFDocument parseWordDocument(InputStream inputStream) throws Exception {
    // 创建允许存储条目带数据描述符的Zip输入流
    ZipArchiveInputStream zipIn = new ZipArchiveInputStream(
        inputStream,
        CharsetUtil.defaultCharset().name(),
        false,
        true // 关键参数:开启对数据描述符的支持
    );
    
    // 通过自定义的Zip流打开OPC包
    OPCPackage opcPackage = OPCPackage.open(zipIn);
    
    // 初始化XWPF文档对象
    XWPFDocument doc = new XWPFDocument(opcPackage);
    
    return doc;
}

注意事项

  • 使用完文档后需调用doc.close()和opcPackage.close()释放资源
  • 确保项目中commons-compress的版本与Apache POI依赖的版本一致,避免兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:15