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

回到顶部