2012-09-19 26 views
1

我使用Java Apache POI訪問Excel電子表格(hssf)。我得到以下錯誤:Apache POI - 處理數據的部分無效

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) 

我錯過了什麼?

+0

問題是什麼? –

+4

您需要調用POI的不同部分來處理此數據(例如XSSF而不是HSSF) – NimChimpsky

回答

8

open一個xlsx(Office打開XML)文件,你應該使用XSSFWorkbook代替HSSFWorkbook,其中用於xls(EXCEL 97-2003)文件。

如果您使用POI < 3.5,則需要升級到至少3.5版,才能讀取xlsx文件。下面是做的轉化guide,但本質上,你需要加載使用WorkbookFactory這對於您需要創建的任何一個XSSFWorkbookHSSFWorkbook的護理文件:

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

確保Excel工作表不腐敗,打開它。如果您看到任何錯誤,請將該文件保存爲MS Excel 97-2003工作表。
另外請確保您指定的文件名爲「**。xls」