poi 读取使用 Strict Open XML 保存的 excel 文档
某项目有一个功能需要读取 excel 报表内容,使用poi读取时报错:
具体错误为:
org.apache.poi.POIXMLException: Strict OOXML isn't currently supported, please see bug #57699
at org.apache.poi.POIXMLDocumentPart.getPartFromOPCPackage(POIXMLDocumentPart.java:668)
at org.apache.poi.POIXMLDocumentPart.<init>(POIXMLDocumentPart.java:128)
at org.apache.poi.POIXMLDocumentPart.<init>(POIXMLDocumentPart.java:118)
at org.apache.poi.POIXMLDocument.<init>(POIXMLDocument.java:61)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:295)
at com.example.ReadExcel.main(ReadExcel.java:27)
错误原因:在高版本 excel 中,另存为文件有一个另存为 Strict Open XML 格式,虽然后缀也为 .xlsx,但 poi 的最新版本(3.17)无法解析。
各种论坛搜索,国外大神在github上公布了一个临时解决方案,亲测可用:
https://github.com/pjfanning/ooxml-strict-converter
引入如下两个文件,配置对路径就好~~