1.使用org.apache.poi解析excle,.xlsx类型文件
InputStream is = new FileInputStream(strFileName);
XSSFWorkbook wb = new XSSFWorkbook(is);
出现异常如下:
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:408)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:183)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:73)
at ru.otr.core.Document.<init>(Document.java:21)
at ru.otr.EnergyLoader.main(EnergyLoader.java:175)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
... 7 more
Caused by: org.apache.xmlbeans.XmlException: error: duplicate attribute 'o:relid'
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3511)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1277)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1264)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:688)
at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:107)
at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.<init>(XSSFVMLDrawing.java:102)
... 12 more
Caused by: org.xml.sax.SAXParseException: duplicate attribute 'o:relid'
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportFatalError(Piccolo.java:1038)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:723)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3479)
... 18 more 解决办法有点复杂,请大家尝试;
 InputStream is = new FileInputStream(strFileName);
OPCPackage pkg = OPCPackage.open(is);
PackagePart p = null;
for(PackagePart part:pkg.getParts()){
  if(part.getPartName().getName().equals("/xl/drawings/vmlDrawing1.vml")){
    p = part;
  }
}
if(p != null){
  pkg.removePart(p);
}
12 XSSFWorkbook wb = new XSSFWorkbook(pkg);
1.使用OPCPackage解压读入的excel流,然后找到出错的那个part,例如/xl/drawings/vmlDrawing1.vml。
2.使用pkg.removePart(p)方法,remove掉就出错的part可以解决了。
3.不过目前只解决了自己遇到的问题,如果大家是其他的part有问题,需要测试一下remove掉后,XSSFWorkbook是否能够正确解析。


最新文章

  1. C++中的显式类型转化
  2. HTML5翻页电子书
  3. 你所不了解的float(滥用float的怪异现象)
  4. iOS autolayout 代码,自定义间距
  5. 使用Windows Azure的VM安装和配置CDH搭建Hadoop集群
  6. Hibernate笔记——(ONE TO ONE)一对一
  7. PHP Header 缓存 --- Header 参数说明
  8. Java WEB —— XML
  9. wavecom短信猫常用AT命令
  10. 汇总文件数据 VBA
  11. setTimeout和setInterval区别
  12. pytorch深度学习60分钟闪电战
  13. 有关于 java native方法
  14. BZOJ2268 : Wormly
  15. vmare 往 virtualbox迁移
  16. qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection
  17. c++ 异常处理(2)
  18. Java 范例 - 线程
  19. shell printf
  20. 如何用python轻松破解wifi密码( 源码 )

热门文章

  1. 数据备份及恢复(mongodump/mongorestore)
  2. RT-Thread Nano移植
  3. Spark standalone模式的安装(spark-1.6.1-bin-hadoop2.6.tgz)(master、slave1和slave2)
  4. 【Css】Layout布局(二)
  5. unity制作人物残影-绘制的方法
  6. 前端emmet插件的一些常用用法
  7. 架构实战项目心得(四):使用Nexus配置Maven私有仓库
  8. 如何高效的算出2x8的值
  9. 项目开发--&gt;高级功能汇总
  10. Description Resource Path Location Type web.xml is missing and &lt;failOnMissingWebXml&gt; is set to true