无法读取 .xlsm 文件 - POI

Can not read .xlsm file - POI

我已经编写了访问 .xlsm 文件的代码,但它无法执行此操作。我已经尝试使用 XSSFWorkBook 和使用 WorkBookFactory.

完成的通用工作簿来处理同一个文件

场景 1:

org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(new  File(
                "/filename.xlsm"));

错误:

提供的电子表格似乎是加密的 .xlsx 文件。必须先解密才能被XSSF使用,不能被HSSF使用

所以我离开了读取文件的通用方式并使用了 XSSF。

场景 2:

 XSSFWorkbook workBook = new XSSFWorkbook(new FileInputStream(new
     File("/fileName.xlsm")));

错误:

org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: 包应包含内容类型部分 [M1.13]

这两种方案都适用于某些 .xlsm 文件。工作文件和非工作文件的属性和数据相同。

有人可以帮忙解决这个问题吗?

正在将评论提升为答案...您需要升级您的 Apache POI 版本!

您可以查看 Apache POI changelog here,看看自 3 年前 3.9 发布以来发生了多少变化。这是相当多的修复页面!你至少需要其中之一......