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)
时间: 2023-07-19 18:18:15 浏览: 265
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。
这个错误是因为你正在使用 HSSF API 处理一个 Office 2007+ XML 文件,而 HSSF API 是用于处理 OLE2 Office 文件格式的。因此,你需要使用 XSSF API 来处理 Office 2007+ XML 文件格式。你可以尝试使用 XSSFWorkbook 来代替 HSSFWorkbook 来读取你的文件,这样就可以避免这个错误。例如,你可以使用以下代码来读取 Office 2007+ XML 文件:
```
FileInputStream file = new FileInputStream(new File("yourfile.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(file);
```
另外,如果你需要同时处理多种 Office 文件格式,你可以使用 Apache POI 中的工厂类来创建不同的 Workbook 对象,例如:
```
Workbook workbook = WorkbookFactory.create(new File("yourfile.xlsx"));
```
这样可以自动识别文件格式并创建相应的 Workbook 对象。
阅读全文