Java POI中的InvalidFormatException
这是我得到的例外:
org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
我试图打开的文件是.xls文件,我搜索了可能的解决方案,发现了这个和这个问题,但是我已经正确地做到了,所以这不是问题。
我的代码:
InputStream file = new FileInputStream(new File(path));org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(file);
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(sheetNumber);
sheetNumber是一个int值(在我的软件中始终为0),并且路径正确无误,在发布此代码之前,我多次测试了这两次,以确保不会出现故障。引发异常的行是:
org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(file);
(如果需要有关代码的更多详细信息,可以在这里找到整个类)
有谁知道我在哪里失败?谢谢你们。
回答:
提一些评论答案
您的第一个问题是所使用的Apache POI的版本。如果要使用POI 3.15 beta 1或更高版本,在这种情况下,您将获得更多有用的Exception。
在POI 3.15 beta
1和更高版本中,您将获得ODFNotOfficeXmlFileException消息,例如:
ODFNotOfficeXmlFileException: The supplied data appears to be in ODF (Open Document) Format. Formats like these (eg ODS, ODP) are not supported, try Apache ODFToolkit
。
实际上,通过在模式下使用Apache Tika CLI
App,您可以找到(并且已经找到了,谢谢!)--detect
。如您所见,application/vnd.oasis.opendocument.spreadsheet
这就是一个OpenDocument格式的电子表格,通常带有.ods
扩展名。因此,有人将.ods
文件重命名为.xlsx
,虽然可以使Excel打开它,但不会神奇地改变格式!
Apache POI不支持ODF格式,因此您需要将文件转换为真正的Excel格式,或者使用Apache ODF
Toolkit之类的文件进行处理。
以上是 Java POI中的InvalidFormatException 的全部内容, 来源链接: utcz.com/qa/399551.html