最近在写项目的时候,使用到了POI对表格的处理,在通过文件流创建工作簿的时候,出现异常,异常信息是:Package should contain a content type part [M1.13]。在这里,记录下这个信息,也供大家参考
问题描述:
先看我的测试代码:public static void main(String[] args)
{
ExportController a = new ExportController();
InputStream is = a.getClass().getResourceAsStream("/excel/测试模板.xlsx");
try
{
Workbook outWb = new XSSFWorkbook(is);
}
catch (IOException e)
{
e.printStackTrace();
}
}
这段代码运行,抛POI异常:Package should contain a content type part [M1.13] 这个异常的原因可能有多种,查找资料发现,大多数回答都是该异常是由于 Excel 2003和2007之间的区别导致的,或者就是说文件是直接改后缀名得到(改后缀名也是会导致异常)。
Excel 2003和2007之间的区别:
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
原因分析:
Excel 的版本,我使用的是2007的,也就是后缀为.xlsx,按理说没什么问题的。
而且模板文件也是新建的,不存在是通过改后缀名得到的(后缀名由.xlx改为.xlsx也是不能识别的)。
解决方案:
最后是把POI的版本从3.14改为3.13解决了问题。
总结
解决方向: 1、创建工作薄的构造方法和Excel的版本是否选择正确 2、Excel文件的是否为新建,而不是通过修改后缀名得到 3、上面都没有问题,考虑POI版本问题更多推荐
POI异常信息:Package should contain a content type part [M1.13]
发布评论