java - Apache POI - 处理数据的无效部分

标签 java apache-poi

我使用 Java Apache POI (hssf) 访问 Excel 电子表格。我收到以下错误:

java.lang.RuntimeException: org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)
at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:143)
at org.testng.internal.Parameters.handleParameters(Parameters.java:426)

我错过了什么?

最佳答案

收件人open xlsx (Office Open XML) 文件,你应该使用 XSSFWorkbook而不是 HSSFWorkbook , 用于 xls (Excel 97-2003) 文件。

如果您使用的是 POI < 3.5,您需要至少升级到 3.5 版,以便能够读取 xlsx 文件。这是一个 guide进行转换,但本质上,您需要使用 WorkbookFactory 加载文件它负责为您创建 XSSFWorkbookHSSFWorkbook:

Workbook workbook = WorkbookFactory.create(new File("file.xlsx"))

关于java - Apache POI - 处理数据的无效部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494982/

相关文章:

java - 需要关于通过验证数据阅读大量 XL 的建议

java - org.apache.poi 中缺少 ENUM

java - Apache POI java.lang.NoClassDefFoundError : org/apache/commons/compress/archivers/zip/ZipFile

java - 使用java和apache POI读取Excel中的数据

java - 在 Controller 类中全局声明 HttpSession?

java - 使用 jenkins 构建 netbeans 项目时,如何在 list 文件中设置版本信息?

java - SpringBoot 2 事务传播嵌套不支持

java - 在java中使用apache poi在excel中的合并区域中对齐文本中心

java - 替换 Zip 存档中的特定文件,而不用 Java 提取整个存档

java - 如何在 eclipselink 中禁用缓存