解决poi导出Excel异常org.openxmlformats.schemas.spreadshe

JAVA报表

POI未捕获到 servlet OUTEXCEL 的其中一个服务方法中抛出的异常。抛出的异常:java.lang.NoClassDefFoundError: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFileRecoveryPr

at java.lang.J9VMInternals.verifyImpl(Native Method)

at java.lang.J9VMInternals.verify(J9VMInternals.java:59)

at java.lang.J9VMInternals.initialize(J9VMInternals.java:120)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:521)

at org.apache.xmlbeans.impl.schema.SchemaTypeImpl.createUnattachedNode(SchemaTypeImpl.java:1859)

at org.apache.xmlbeans.impl.schema.SchemaTypeImpl.createTypeStoreUser(SchemaTypeImpl.java:1805)

at org.apache.xmlbeans.impl.store.Xobj.setStableType(Xobj.java:1390)

at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2497)

at org.apache.xmlbeans.impl.store.Cur.setType(Cur.java:2482)

at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:630)

at org.apache.xmlbeans.impl.store.Locale.newInstance(Locale.java:606)

at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.newInstance(SchemaTypeLoaderBase.java:198)

 

经过确认,是由于poi使用的poi-ooxml-schemas是ooxml-schemas的精简版,所以在was服务器上导出Excel可能会报错,tomcat下面使用前者是没有问题的,此时需要统一jar包版本为ooxml-schemas.1.1.jar,这个ooxml-schemas有两个版本的jar包,一个是 POI 3.7,之前版本使用的ooxml-schemas-1.0.jar.另一个就是poi3.7以后版本使用的ooxml-schemas-1.1.jar,官网也说了这个问题:http://poi.apache.org/faq.html#faq-N10025,

 

here are two jar files available, as described in the components overview section. The full jar of all of the schemas is ooxml-schemas-1.1.jar, and it is currently around 15mb. The smaller poi-ooxml-schemas jar is only about 4mb. This latter jar file only contains the typically used parts though.

 

Note that for POI 3.5 and 3.6, the full ooxml schemas jar was named ooxml-schemas-1.0.jar. For POI 3.7, the filename was bumped to ooxml-schemas-1.1.jar when generics support was added. You can use ooxml-schemas-1.1.jar with POI 3.5 and 3.6 if you wish, but POI 3.7 won't wokr with ooxml-schemas-1.0.jar (it needs thew newer one).

 

意思很简单,把你的poi需要依赖的jar包给从

1.maven下解决方案如下:

<!--  适合Tomcat 的缩减版ooxml-schemas-3.9 

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml-schemas</artifactId>

<version>3.9</version>

</dependency>

-->

 

换成下面的

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>ooxml-schemas</artifactId>

<version>1.1</version>

</dependency>

 

重启服务,导出excel就ok了。

ps:poi3.9 一共需要如下几个jar包,才能正常工作。

<!-- poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>1.0.1</version>
        </dependency>

        <!--  适合Tomcat 的缩减版ooxml-schemas-3.9
            <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.9</version>
            </dependency>
        -->

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>ooxml-schemas</artifactId>
            <version>1.1</version>
        </dependency>

        <!-- poi end-->

2.普通的web工程,去下载jar包。

此jar包在maven官网 的 下载地址:http://search.maven.org/#artifactdetails%7Corg.apache.poi%7Cooxml-schemas%7C1.1%7Cjar

时间: 2024-10-29 17:39:59

解决poi导出Excel异常org.openxmlformats.schemas.spreadshe的相关文章

hyperlink-关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码

问题描述 关于 POI 导出EXCEL 中 HyperLink 设置中文地址乱码 请问大家一个问题,我在使用POI 3.6 的时候, 在为单元格添加HyperLink的时候,遇到添加 中文连接乱码问题,例如我的链接地址是:/file/这是PDF.PDF 在EXCEL中就会变为/file/??PDF.PDF 请问如何解决? 解决方案 http://www.iteye.com/problems/70541

java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答

问题描述 java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答 问题如下.在系统中使用poi导出Excel,在别人的电脑上2010版的Excel中可以正常打开,在我本人电脑上的2003打开就是乱码,一开始查找资料是poi的jar包版本问题.系统上的poi jar包是3.0.整个系统的jar包不敢乱更换,所以只能别的方式修改.在Action中有转码语句: res.setHeader("Content-disposition", "attachmen

java-【急,在线等】Java使用POI导出Excel,服务器部署后超过50行报错!

问题描述 [急,在线等]Java使用POI导出Excel,服务器部署后超过50行报错! Java使用POI导出Excel,服务器部署后超过50行报错,但本地调试无异常!具体错误信息如下: 10:13:44,761 ERROR org.apache.struts2.dispatcher.StreamResult StreamResultX : Can not find a java.io.InputStream with the name [excelStream] in the invocati

java poi导出excel,用excel 2013打开样式不能正常显示

问题描述 java poi导出excel,用excel 2013打开样式不能正常显示 我用的是poi3.02.用2010打开没问题,用2013打开只是合并单元格的地方,边框样式不能显示. 解决方案 java poi生成excel并修改excel样式POI 导出EXCEL样式实例POI Excel导出样式设置 解决方案二: poi设置的用07版的应该就可以 解决方案三: poi 针对03和07不同的版本会给出不同的类去处理的 你看看你的代码是 用 03还是 07 生成的 excel

poi java excel-java poi 导出excel 把一样的数据动态合并单元格

问题描述 java poi 导出excel 把一样的数据动态合并单元格 急求,有一个list数据 导出成 这种格式 公司和年份两列是要有动态合并功能 并且年份合并的时候不能跨公司 有没有大神帮帮忙... HSSFWorkbook workbook = new HSSFWorkbook(); String[] columnNames = new String[]{"编号","公司", "年份","性质", "名称&qu

poi导出excel怎么设置工作表标签的颜色

问题描述 poi导出excel怎么设置工作表标签的颜色 我想知道的不是单元格背景,也不是字体颜色,是sheet选项的颜色,求大神解答 解决方案 excel工作表标签颜色设置方法

java poi 图片-Java POI导出Excel并添加图片问题

问题描述 Java POI导出Excel并添加图片问题 现在要利用POI导出Excel报表,并且需要将一张图片一起导出到Excel中,请问有Java中有什么方法能将图片的背景变成透明的,因为图片本身是一个公章,客户想通过程序实现盖章,所以需要将公章的图片变成透明的然后导出到Excel中,这样就不回遮挡Excel本身的内容.谢谢了! 解决方案 实现了吗?我现在也遇到这个问题了啊... 解决方案二: 实现了吗,我也遇到相同的问题,求解答

大数据量POI导出Excel出错及getRow(行号)返回空行的问题咨询

问题描述 本人最近有个需求.就是导出1个含3个Sheet的excel.其中有个sheet的数据量比较大(大有90W条).每个sheet都有汇总统计信息及分组统计信息.咱是用的SXSSFWorkbookwb=newSXSSFWorkbook(-1);方式创建工作表然后每5000条记录调用一次((SXSSFSheet)sheet).flushRows();刷一次缓存.现在咱遇到两个问题1,导出报错,错误日志为:Exceptioninthread"main"java.lang.OutOfMe

解决MindManager导出PDF异常问题

  在Mindmanager中,用户可以根据自己的需求选择将导图导出为PDF格式,但也会偶尔出现异常,本文就介绍了MindManager导出PDF异常问题中的一种情况. 问题描述: 在载入开启一个MindManager Player PDF文件时,Adobe Acrobat 7 不停报告"Buffering正在缓冲" ,而且该文件无法正常显示. 问题分析:MindManager Player 不支持Adobe Acrobat 7 (Reader 或者 Professional版本).