使用poi读取excel异常IOException: OPC Compliance error [M4.3]: Producers shall not create a document ele..._exception in thread "main" cn.hutool.poi.exception-程序员宅基地

技术标签: Java技术  

前言
  前一段时间,帮女朋友整理她们公司的破Excel文档,本着减少工作量的原则(居家好男人),帮忙写了个java main去读取整理Excel,到后来发现在读取到xlsx的excel报错,报错信息居然没看懂。。。
报错信息

Exception in thread "main" cn.hutool.poi.exceptions.POIException: IOException: OPC Compliance error [M4.3]: Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.
	at cn.hutool.poi.excel.WorkbookUtil.createBook(WorkbookUtil.java:87)
	at cn.hutool.poi.excel.WorkbookUtil.createBook(WorkbookUtil.java:48)
	at cn.hutool.poi.excel.ExcelReader.<init>(ExcelReader.java:64)
	at cn.hutool.poi.excel.ExcelReader.<init>(ExcelReader.java:54)
	at cn.hutool.poi.excel.ExcelUtil.getReader(ExcelUtil.java:217)
	at cn.hutool.poi.excel.ExcelUtil.getReader(ExcelUtil.java:193)
	at com.ls.handler.option_excel.ExcelReaderExcel.readExcel(ExcelReaderExcel.java:53)
	at com.ls.handler.option_excel.ExcelReaderExcel.main(ExcelReaderExcel.java:123)
Caused by: java.io.IOException: OPC Compliance error [M4.3]: Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.
	at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:351)
	at org.apache.poi.ss.usermodel.WorkbookFactory.createXSSFWorkbook(WorkbookFactory.java:314)
	at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:302)
	at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:271)
	at cn.hutool.poi.excel.WorkbookUtil.createBook(WorkbookUtil.java:85)
	... 7 more
Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: OPC Compliance error [M4.3]: Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.
	at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.checkElementForOPCCompliance(PackagePropertiesUnmarshaller.java:259)
	at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.checkElementForOPCCompliance(PackagePropertiesUnmarshaller.java:291)
	at org.apache.poi.openxml4j.opc.internal.unmarshallers.PackagePropertiesUnmarshaller.unmarshall(PackagePropertiesUnmarshaller.java:113)
	at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:741)
	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:274)
	at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:115)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:339)
	... 11 more

实现逻辑
   我的实现是,把所有的excel文件都放到一个文件夹里,去读取,里边有xls文件也有xlsx文件,xls文件是没问题的,但是xlsx文件会报这个错。
异常原因和解决
  为了发现异常,我再执行文件解析的时候,打印了一下文件名,发现一个问题
在这里插入图片描述

  可以清楚的看到“~$蔺一铭.xlsx”,读取的并不是一个正常的文件,这是一个类似于临时文件,而且是隐藏文件,以为找到了原因了,把contains ~的文件排除掉不就行了。
后续
  到这里我以为终于解决了这个问题,但是我后来轮循的时候发现,又出了这个异常!整个人有点崩溃,仔细排查了文件名,完全没问题,也不是临时文件,抱着试一试的把有问题的xlsx文件打开随便编辑一下再保存,重新读取,居然异常没有了…
  我只能说,POI虽然方便了我们读取、写入EXCEL,但是架不住跟EXCEL的兼容性还是不行,莫名其妙的出各种问题,希望以后可以更加强大吧…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IM507/article/details/100561304

智能推荐

Keras学习之tensor张量_keras定义张量-程序员宅基地

文章浏览阅读1.2w次。本文参考Keras中文官方网站:http://keras-cn.readthedocs.io/en/latest/other/regularizers/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tensor(张量)指的是指广泛的数据类型,它是nnn维的(nnn是自然数)。最简单的张量是单个的数字,例如数字666就是000维张量;..._keras定义张量

凸集的分离定理_强分离凸集的正常分离-程序员宅基地

文章浏览阅读1.3w次,点赞4次,收藏8次。在RnR^n中,我们有个直观的事实是:一个超平面(必须是 n-1 维的)将整个空间分为两个部分,也就是说这个超平面将RnR^n分成了两个闭的半空间,这两个闭的半空间称为与H相关的闭的半空间。同样的可以定义与H相关的两个开的半空间。(一 ) 定义:1.1称一个超平面H可以分离(separate)两个非空的集合C1C_1,C2C_2,当C1C_1和C2C_2分别包含在两个与H相关的闭的半空间中。1.2_强分离凸集的正常分离

Topaz Photo AI for Mac(人工智能降噪软件)-程序员宅基地

文章浏览阅读461次,点赞8次,收藏3次。是一款图像处理软件,它使用人工智能来增强和优化数码照片。它使用高级算法和机器学习技术来自动调整图像的各个方面,例如颜色、锐度、对比度和降噪。Topaz Photo AI 还可以执行复杂的任务,例如从图像中删除物体或人物,以及恢复旧照片或损坏的照片。在不改变工作流程的情况下获得更好的图像质量。您可以将 Topaz Photo AI 作为独立软件使用,也可以直接从大多数照片编辑器中使用。获得最干净的 RAW图像 ,开始您的创意编辑。专注于您的创造力而不是您的工具。获得清晰、 无噪点的图像。

如何添加马云,马化腾,李彦宏的微信_加马化腾微信成功了-程序员宅基地

文章浏览阅读1.3w次。让马化腾出现在你的微信聊天里面首先声明不是 PS, 我不会 PS 的,这是程序截图:如下图:程序源代码:http://git.oschina.net/LittleDY/isWeiXin我在他的基础上,重新设计了图片和聊天记录。图片来自百度百科,但愿没有侵权, 若有侵权行为,请及时回复,我可以立即删除。合理使用,仅供参考_加马化腾微信成功了

socket之getaddrinfo()函数_socket.getaddrinfo-程序员宅基地

文章浏览阅读1.5k次。socket编程之addrinfo结构体与getaddrinfo函数1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个addrinfo的结构(列表)指针而不是一个地址清单。这些a_socket.getaddrinfo

UIL神器-程序员宅基地

文章浏览阅读50次。Android开源代码精选之ImageLoaderAndroid开发中最常用到的组件,非ImageLoader莫属。源码地址:https://github.com/nostra13/Android-Universal-Image-Loader[上代码]:1. 添加jar包2. 修改Android Manifest,添加网络请求和写文件权限?代码片段[email protected]

随便推点

kubeflow二次开发--独立module开发_kubeflow前端二次开发-程序员宅基地

文章浏览阅读692次。一、介绍二、开始coding1、Dockerfile内容2、yaml文件3、build docker image4、创建pod和service5、访问一、介绍系统:Centos7Kubeflow版本:0.7.0Pipeline版本:0.1.31Go版本:1.13前后端不分离的一个应用,目录结构如下public存放静态资源src是api代码主要功能是查询数据库数据,然后在网页显示用到了gin框架,起http服务Gorm作为orm框架代码已上传我的githubhttps://gith._kubeflow前端二次开发

floor() 函数_floor()函数-程序员宅基地

文章浏览阅读4.9k次,点赞6次,收藏13次。查看更多https://www.yuque.com/docs/share/2a8366d1-bdc5-4faf-95ed-655beea8d8f9_floor()函数

74cms CSRF漏洞可以诱骗添加管理员-程序员宅基地

文章浏览阅读2.3k次。74cms CSRF漏洞可以诱骗添加管理员

少年郎,我这里有一份nginx配置,你拿走吧-程序员宅基地

文章浏览阅读5.7k次。首先,直接上干货:user root;worker_processes 4;error_log /var/log/nginx/error.log;#pid logs/nginx.pid;events { use epoll; worker_connections 65536; accept_mutex on; multi_acc..._large_client_header_buffers 4 128k; underscores_in_headers on; client_header

「小程序」信息无障碍初体验_微信小程序无障碍版本-程序员宅基地

文章浏览阅读1k次。是的,千呼万唤,微信小程序始出来。微信小程序正式发布后,中国信息无障碍产品联盟(CAPA)的信息无障碍工程师们在第一时间对其无障碍情况进行了体验。共选取了滴滴出行DiDi、饿了么外卖服务、今日头条lite三款小程序,在Android及iOS平台上分别通过读屏软件进行操作使用,并记录下其对应的表现。 体验所使用的机型及相关环境如下: 华为 P9 + Android 7.0 + EMui 5..._微信小程序无障碍版本

FPGA的基本组成结构_fpga组成-程序员宅基地

文章浏览阅读1.8w次,点赞11次,收藏146次。目前主流的FPGA芯片仍是基于查找表。FPGA芯片主要由以下6部分组成:(1)可编程输入输出单元(IOB)(2)基本可编程逻辑单元(CLB)(3)完整的时钟管理模块(4)丰富的布线资源(5)嵌入式块RAM(6)内嵌的底层功能单元和嵌入式专用硬核通过配置以上6个不同的部分,基本可以让FPGA实现任何你想要实现的功能。一、FPGA的结构解析对于一款芯片,我们肉眼看到..._fpga组成