通过ApachePOI在java中读取.xlsx

通过ApachePOI在java中读取.xlsx,java,apache-poi,xmlbeans,Java,Apache Poi,Xmlbeans,我正在尝试将.xlsx文件中的数据读取到java程序中。我可以读取.xls,但当我尝试使用.xlsx编写相同的代码时,会出现异常 访问文件的代码: FileInputStream fs = new FileInputStream(inputFile); Workbook wb = WorkbookFactory.create(fs); Sheet sheet = wb.getSheetAt(0); 异常跟踪: > org.apache.poi.POIXMLException: java.

我正在尝试将.xlsx文件中的数据读取到java程序中。我可以读取.xls,但当我尝试使用.xlsx编写相同的代码时,会出现异常

访问文件的代码:

FileInputStream fs = new FileInputStream(inputFile);
Workbook wb = WorkbookFactory.create(fs);
Sheet sheet = wb.getSheetAt(0);
异常跟踪:

> 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:465)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:173)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:248)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:209)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:168)
    at com.sap.bo.st.utilities.ReadInputs.getAllInputs(ReadInputs.java:21)
    at testplan.job.JobCount.createData1(JobCount.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:136)
    at org.testng.internal.Parameters.handleParameters(Parameters.java:430)
    at org.testng.internal.Invoker.handleParameters(Invoker.java:1287)
    at org.testng.internal.Invoker.createParameters(Invoker.java:1004)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1093)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:771)
    at org.testng.TestRunner.run(TestRunner.java:621)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
    at org.testng.SuiteRunner.run(SuiteRunner.java:259)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1176)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1101)
    at org.testng.TestNG.run(TestNG.java:1009)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.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)
    ... 33 more
Caused by: java.lang.ExceptionInInitializerError
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:768)
    at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument.<clinit>(Unknown Source)
    at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:83)
    ... 38 more
Caused by: java.lang.RuntimeException: Could not instantiate SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException): is the version of xbean.jar correct?
    at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(Unknown Source)
    at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.<clinit>(Unknown Source)
    ... 48 more
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)
    ... 50 more
Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible minor version - expecting up to 23, got 24 (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index) - code 3
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.<init>(SchemaTypeSystemImpl.java:1520)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.<init>(SchemaTypeSystemImpl.java:183)
    ... 54 more
>org.apache.poi.POIXMLException:java.lang.reflect.InvocationTargetException
位于org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
在org.apache.poi.poimmldocumentpart.read(poimmldocumentpart.java:465)
位于org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:173)
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:248)
位于org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:209)
位于org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:168)
在com.sap.bo.st.utilities.ReadInputs.getAllInputs(ReadInputs.java:21)上
在testplan.job.JobCount.createData1(JobCount.java:47)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
位于org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:136)
位于org.testng.internal.Parameters.handleParameters(Parameters.java:430)
位于org.testng.internal.Invoker.handleParameters(Invoker.java:1287)
位于org.testng.internal.Invoker.createParameters(Invoker.java:1004)
位于org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1093)
位于org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124)
位于org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
位于org.testng.TestRunner.privateRun(TestRunner.java:771)
位于org.testng.TestRunner.run(TestRunner.java:621)
位于org.testng.SuiteRunner.runTest(SuiteRunner.java:357)
在org.testng.SuiteRunner.runSequential上(SuiteRunner.java:352)
位于org.testng.SuiteRunner.privateRun(SuiteRunner.java:310)
运行(SuiteRunner.java:259)
位于org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
位于org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
在org.testng.testng.runSuitesSequentially上(testng.java:1176)
位于org.testng.testng.runSuitesLocally(testng.java:1101)
运行(testng.java:1009)
位于org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
位于org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
... 33多
原因:java.lang.ExceptionInInitializeError
在sun.misc.Unsafe.EnsureClassified(本机方法)
位于sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(未知源)
在sun.reflect.ReflectionFactory.newFieldAccessor处(未知源)
位于java.lang.reflect.Field.acquireFieldAccessor(未知源)
位于java.lang.reflect.Field.getFieldAccessor(未知源)
位于java.lang.reflect.Field.get(未知源)
位于org.apache.xmlbeans.xmlbeans.typeSystemForClassLoader(xmlbeans.java:768)
位于org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument。(未知来源)
位于org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(未知源)
位于org.apache.poi.xssf.model.ThemesTable.(ThemesTable.java:83)
... 38多
原因:java.lang.RuntimeException:无法实例化SchemaTypeSystemImpl(java.lang.reflect.InvocationTargetException):xbean.jar的版本正确吗?
位于schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(未知源)
位于schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder。(未知来源)
... 48多
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
... 50多
原因:org.apache.xmlbeans.SchemaTypeLoaderException:XML-BEANS编译的模式:不兼容的次要版本-预计最多23个,得到24个(schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index)-代码3
位于org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader。(SchemaTypeSystemImpl.java:1520)
位于org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260)
位于org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.(SchemaTypeSystemImpl.java:183)
... 54多

我已尝试将XMLbeans.jar更新为最新版本,但仍然得到了这个结果。

我认为您必须使用XSSFWorkbook而不是工作簿读取详细信息示例

如果使用maven:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>
如果仍然有错误,请创建另一个新的xlsx文件进行测试

如果使用maven:

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

如果仍有错误,请创建另一个新的xlsx文件以测试

异常的关键位已接近尾声:

Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: 
Incompatible minor version - expecting up to 23, got 24 (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index) - code 3
这表明您使用的XMLBeans版本比编译模式JAR的版本旧。您可以将较旧的模式与较新的运行时一起使用,但不能以其他方式使用aro
Caused by: org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: 
Incompatible minor version - expecting up to 23, got 24 (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index) - code 3