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)
我错过了什么?
要打开 xlsx
(Office Open XML)文件,您应该使用XSSFWorkbook
而不是HSSFWorkbook
,它用于xls
(Excel 97-2003)文件。
如果您使用POI <3.5,则需要升级到至少3.5版,才能读取xlsx
文件。 这里是进行转换的指南 ,但实质上,您需要使用WorkbookFactory
加载文件, WorkbookFactory
负责为您创建XSSFWorkbook
或HSSFWorkbook
:
Workbook workbook = WorkbookFactory.create(new File("file.xlsx"))
打开它,确保excel表没有损坏。 如果您看到任何错误,请将文件另存为MS Excel 97-2003工作表。
还要确保您已将文件名指定为“**。xls”