无法读取 .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 发布以来发生了多少变化。这是相当多的修复页面!你至少需要其中之一......
我已经编写了访问 .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 发布以来发生了多少变化。这是相当多的修复页面!你至少需要其中之一......