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

son*_*onu 1 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)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Joã*_*lva 8

打开一个xlsx(的Office Open XML)文件,你应该使用XSSFWorkbook,而不是HSSFWorkbook,它用于xls(EXCEL 97-2003)文件.

如果您使用POI <3.5,则需要升级到至少3.5版,才能读取xlsx文件.这是进行转换的指南,但实质上,您需要加载文件,使用WorkbookFactory该文件来创建一个XSSFWorkbookHSSFWorkbook为您:

Workbook workbook = WorkbookFactory.create(new File("file.xlsx"))
Run Code Online (Sandbox Code Playgroud)