有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Apache POI 4.1.1从excel文件读取值时出现java错误

我试图使用Apache POI从excel文件中读取值,遇到以下错误消息:

org.apache.poi.ooxml.POIXMLException: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:66) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:657) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:282) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:303) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at cfo.metrics.loading.MetricsMonthlyHelper.getIndvEventValues(MetricsMonthlyHelper.java:117) [lib/:?]
    at cfo.metrics.loading.MetricsMonthlyHelper.getAllExcelValues(MetricsMonthlyHelper.java:2190) [lib/:?]
    at cfo.metrics.loading.MetricsDBLoaderMonthly.main(MetricsDBLoaderMonthly.java:23) [lib/:?]
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_171]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_171]
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63) ~[poi-ooxml-4.1.1.jar:4.1.1]
    ... 7 more
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
    at org.apache.poi.ooxml.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:43) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_171]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_171]
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) ~[poi-ooxml-4.1.1.jar:4.1.1]
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63) ~[poi-ooxml-4.1.1.jar:4.1.1]
    ... 7 more 

我正在为我的项目poi-4.1.1使用以下jar文件。jar,poi-ooxml-4.1.1。jar和poi-ooxml-schemas-4.1.1。罐子
是否有人遇到了上述错误,并能阐明其根本原因


共 (1) 个答案

  1. # 1 楼答案

    对于poi-ooxml-4.1.1。jar,您应该使用xmlbeans-3.1.0。jar,请参见:

    +- org.apache.poi:poi:jar:4.1.1:compile
    |  +- commons-codec:commons-codec:jar:1.11:compile
    |  +- org.apache.commons:commons-collections4:jar:4.4:compile
    |  \- org.apache.commons:commons-math3:jar:3.6.1:compile
    +- org.apache.poi:poi-ooxml:jar:4.1.1:compile
    |  +- org.apache.poi:poi-ooxml-schemas:jar:4.1.1:compile
    |  |  \- org.apache.xmlbeans:xmlbeans:jar:3.1.0:compile
    |  +- org.apache.commons:commons-compress:jar:1.19:compile
    |  \- com.github.virtuald:curvesapi:jar:1.06:compile