首页 > 解决方案 > apache poi SXSSFWorkbook - java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z

问题描述

我想使用 apache poi SXSSFWorkbook 类制作 excel 文件。
我正在使用void write(OutputStream stream) throws IOExceptionWorkbook 界面中的方法。
但是发生了错误。错误信息是

java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z
        at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.setDocumentInfo(DOM2TO.java:377)
        at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:131)
        at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:684)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:728)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:343)
        at org.apache.poi.openxml4j.opc.StreamHelper.saveXmlInStream(StreamHelper.java:80)
        at org.apache.poi.openxml4j.opc.internal.marshallers.ZipPartMarshaller.marshallRelationshipPart(ZipPartMarshaller.java:174)
        at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:466)
        at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1441)
        at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:201)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.write(SXSSFWorkbook.java:883)
        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.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:43)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at H0000000000000971615427686681096.writeFile(H0000000000000971615427686681096.groovy:223)
        at H0000000000000971615427686681096$writeFile.callCurrent(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
        at H0000000000000971615427686681096.run(H0000000000000971615427686681096.groovy:108)
        at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:402)

我正在使用没有 DocumentImpl.getXmlStandalone() 方法的 xercesImpl-2.4.0.jar 版本。
而且我无法升级 xercesImpl 版本(因为副作用)。
如何使用 xercesImpl-2.4.0.jar 编写 excel 文件?

poi 版本就像那个 poi-3.12.jar
poi-ooxml-3.12.jar
poi-ooxml-schemas-3.12.jar

标签: javaexcel

解决方案


我通过更改工作簿实施解决了

SXSSFWorkbook -> HSSFWorkbook


推荐阅读