POI异常信息:Package should contain a content type part [M1.13]

最近在写项目的时候,使用到了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版本问题
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值