最近在写项目的时候,使用到了POI对表格的处理,在通过文件流创建工作簿的时候,出现异常,异常信息是:Package should contain a content type part [M1.13]。在这里,记录下这个信息,也供大家参考。


问题描述:

先看我的测试代码:

String templatePath = this.getClass().getResource("/").getPath()+"/static";
FileInputStream excelFileInputStream = new FileInputStream(templatePath + "/测试模板.xlsx");
Workbook workbook = WorkbookFactory.create(excelFileInputStream);
excelFileInputStream.close();
Sheet sheet = workbook.getSheetAt(0);
Row xssfRow = sheet.getRow(5); Cell xssfCell = xssfRow.getCell(0); xssfCell.setCellValue("交货状态:" + map.get("status").toString());
xssfRow = sheet.getRow(5); xssfCell = xssfRow.getCell(15); xssfCell.setCellValue(map.get("machineNo").toString());
// 省去其他填充字段
FileOutputStream excelFileOutPutStream = new FileOutputStream("C:/测试模板-" + key + ".xlsx");
workbook.write(excelFileOutPutStream);
excelFileOutPutStream.flush();
excelFileOutPutStream.close();

这段代码运行,抛POI异常:Package should contain a content type part [M1.13]这个异常的原因可能有多种,查找资料发现,大多数回答都是该异常是由于 Excel 2003和2007之间的区别导致的,或者就是说文件是直接改后缀名得到(改后缀名也是会导致异常)。 Excel 2003和2007之间的区别:

HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。


原因分析:

Excel 的版本,我使用的是WPS 2019 个人版的,也就是后缀为.xlsx,按理说没什么问题的。
而且模板文件也是新建的,不存在是通过改后缀名得到的(后缀名由.xls改为.xlsx也是不能识别的)。
此XLSX文件是通过《WPS 2019 个人版》将一个XLS文件另存为XLSX的。可能使用WPS导出的时候有些关键的XLSX文件头没有加入进去导致POI无法识别这是一个2007的XLSX文件。


解决方案:

使用必应搜索online convert,打开https://www.online-convert.com,在Document Converter的下拉框中选择Convert to XLSX,然后将WPS另存为的XLSX文件上传,再转换一次XLSX。将这个再转换的XLSX导入进Java的程序。问题解决。
此网站转换后生成的文档有些字体发生了变化,如果对格式有严格要求,需要再进行调整。转换后的XLSX文件使用WPS编辑保存后也可以在Java POI程序中使用。

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

Java POI WPS另存为的XLSX Excel报错Package should contain a content type part [M1.13]相关推荐

  1. poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]

    导入excel文件POI解析 时报错: FileInputStream file = new FileInputStream(new File("G:\\TestData\\test.xls ...

  2. java poi读取excel报错Your InputStream was neither an OLE2 stream, nor an OOXML stream

    错误描述 java poi读取excel报错Your InputStream was neither an OLE2 stream, nor an OOXML stream 楼主是读取的另存为的exc ...

  3. 使用poi导出excel报错-打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    使用poi导出excel报错-打开文件报"Excel 已完成文件级验证和修复.此工作簿的某些部分可能已被修复或丢弃" 1.原本正常使用的Excel导出突然下载文件报错 2.定位时发 ...

  4. import win32com.client 将xls改成xlsx,操作excel报错

    import win32com.client 将xls改成xlsx,操作excel报错 一:代码如下: excel = win32com.client.DispatchEx('Excel.Applic ...

  5. 关于java导出Excel报错65535的解决方案

    关于java导出Excel报错65535的解决方案 java.lang.IllegalArgumentException: Invalid row number (65536) outside all ...

  6. oracle.sql.clob 报错,oracle11g java导出excel报错oracle.sql.CLOB@xxxx问题

    在项目中遇到,生产导出excel报错的问题 oracle.sql.CLOB@xxxx的错误,测试导出没问题,一样的代码. 原来oracle数据库从10g以后,使用wm_concat,函数返回值会自动转 ...

  7. readxl包导入excel报错Error: `path` does not exist解决方法

    readxl包导入excel报错Error: `path` does not exist解决方法 方法1:File - import dataset - from excel 方法2:检查语法错误 正 ...

  8. Matlab使用xlsread读xlsx文件报错处理

    Matlab使用xlsread读xlsx文件报错处理 报错:错误使用 xlsread (line 136) 无法打开文件 .... 原因:Matlab读入xlsx文件需要启用excel的com端口.如 ...

  9. python 读取xlsx文件报错,解决方法 ( xlrd 2.0.1 仅支持 .xls 文件)

    一.问题: python读取xlsx文件报错,报错信息如下: 为什么会报错?那是因为xlrd 2.0.1 仅支持 .xls 文件. 二.解决方法: 1.确认自己安装的xlrd版本: 可以先用以下命令看 ...

最新文章

  1. php解析ip列表并入库
  2. bugzilla dbd-mysql_Linux下安装Bugzilla——完整版
  3. selenium 测试
  4. .net (object sender, EventArgs e) 学习总结
  5. VC++实现混合静态分裂视窗的方法
  6. 树莓派 python 无人机_DIY一个基于树莓派和Python的无人机视觉跟踪系统
  7. Best Coder Lotus and Characters
  8. 倒角距离(Chamfer distance)和earth mover‘s diatance
  9. HTML|CSS之布局相关总结
  10. html怎么设置顶部布局,html – CSS位置:固定没有顶部给出意想不到的布局?
  11. 从我的公众号谈执行力
  12. Clob,Blob,InputStream,byte 互转
  13. 剑指offer总目录
  14. 河南省第二届“金盾信安杯”网络安全大赛 WriteUp Crypto+Misc
  15. vector_back
  16. 《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验
  17. .NetCore Mediator的简单使用
  18. 【Linux练习生】线程安全
  19. 蓝桥杯模拟题.花园灌溉(bfs)
  20. VC正则表达式的使用(《VC知识库》)

热门文章

  1. 更新iCloud设置iPhone / iPad卡住时该怎么修复
  2. Unity实现“海岛奇兵” 水特效
  3. JavaScript内置对象
  4. 那些有趣的GAN合成图像项目(在线可操作)
  5. 获取移动公网IPV6(光猫桥接)
  6. 带关闭按钮的滚动广告
  7. 107个经典常用javascript语句
  8. 如何将PDF中的黑色字体改成红色
  9. RPA教程丨银行RPA在银行业中的9大应用场景
  10. redis 缓存失效原理