问题描述: 在使用Apache POI 4.1版本的XSSFWorkbook时,可能会遇到"POIXMLException: 不支持严格的OOXML"异常。
解决方法: 此异常的原因是Apache POI 4.1版本引入了对严格的OOXML标准的支持,而一些旧的OOXML文件可能不符合该标准导致异常。为了解决这个问题,可以使用以下两种方法之一:
方法1:禁用严格的OOXML校验 可以通过设置系统属性来禁用严格的OOXML校验。在程序的入口处,添加以下代码:
System.setProperty("org.apache.poi.ooxml.strict", "false");
这将禁用严格的OOXML校验,但也可能导致一些潜在的问题,因为POI将不再强制执行严格的标准。
方法2:将旧版本的POI库降级 如果禁用严格的OOXML校验不符合需求,可以考虑将POI库降级到旧版本。可以使用较旧的POI版本,如3.17,这个版本不会引入严格的OOXML校验。在Maven项目中,可以通过在pom.xml文件中指定POI依赖项的版本来降级。
org.apache.poi
poi
3.17
org.apache.poi
poi-ooxml
3.17
这将使用POI 3.17版本,以避免严格的OOXML校验。
请注意,这两种方法都不是最佳的解决方案,因为它们可能导致其他潜在的问题。最好的方法是尽可能升级旧的OOXML文件,使其符合严格的OOXML标准,以便与Apache POI 4.1版本一起使用。