【poi】Package should contain a content type part [M1.13],
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 i
·
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)
<poi.version>4.1.2</poi.version>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
将创建poi中的workbook换成如下方式就可以了
用户中存在文件后缀或者文件名称任意变化的情况,变为工厂中 根据流中的属性进行excl的文件的获取,就不会存在异常,03版的excl和后面的excl不会存在不兼容的情况。
Workbook wb = null;
//使用工厂创建wb的模板 根据流中的内容来判断创建合适的流文件
wb = WorkbookFactory.create(resourceAsStream);
// if (fileName.endsWith(".xls")) {
// wb = new HSSFWorkbook(resourceAsStream);
// }
// if (fileName.endsWith(".xlsx")) {
// wb = new XSSFWorkbook(resourceAsStream);
// }
之前使用注释中的内容来创建wb 则会存在问题,直接修改文件的后缀,会出现文件中的内容读取不到的情况,则需要根据文件中的流内容来判断excl中的文件,解析相应的文件
工厂中的创建源码如下:
根据下图中的源码可以看出创建的时候
如需查看的话可以自己测试
更多推荐
已为社区贡献1条内容
所有评论(0)