最近在写项目的时候,使用到了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]