zoukankan      html  css  js  c++  java
  • 解决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

  • 相关阅读:
    项目文件.NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
    消息错误INSTALL_FAILED_INSUFFICIENT_STORAGE
    元素链表数据结构:静态链表
    对象类Android应用程序资源管理器(Asset Manager)的创建过程分析
    23种模式中的外观模式
    接口与抽象类的区别
    java中通用的数据库连接与关闭方法类的简单写法
    对Hello China操作系统比较客观的评价
    Hello China V1.68版本源代码、安装包和相应文档,欢迎下载适用
    使用Service Bus Explorer 工具来管理和测试Topics、 Queues 和 Relay Services
  • 原文地址:https://www.cnblogs.com/ae6623/p/4416423.html
Copyright © 2011-2022 走看看