Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApachePOI读取.xlsx文件会产生InvocationTargetException_Java_Apache Poi_Xlsx - Fatal编程技术网

Java 使用ApachePOI读取.xlsx文件会产生InvocationTargetException

Java 使用ApachePOI读取.xlsx文件会产生InvocationTargetException,java,apache-poi,xlsx,Java,Apache Poi,Xlsx,我试图使用ApachePOI读取.xlsx文件,但遇到错误: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException 错误的完整堆栈跟踪显示: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException at org.apache.poi.POIXMLFactory.createDocumen

我试图使用ApachePOI读取.xlsx文件,但遇到错误:

org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
错误的完整堆栈跟踪显示:

    org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
    at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:625)
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:637)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:186)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:290)
    at com.gemini.util.WorkbookObject.createExcelObj(WorkbookObject.java:77)
    at com.gemini.util.ObjectPool.prepareList(ObjectPool.java:24)
    at com.gemini.util.WorkbookObject.getInstance(WorkbookObject.java:36)
    at dhfl_idecimal.decimal_dhfl.calculator.Calculator.processWealthPlusAce(Calculator.java:33)
    at dhfl_idecimal.decimal_dhfl.calculator.Calculator.main(Calculator.java:167)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
    at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:60)
    ... 9 more
Caused by: org.apache.xmlbeans.XmlException: Attribute "type" was already specified for element "v:shape".
    at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:138)
    at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.<init>(XSSFVMLDrawing.java:121)
    ... 15 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 549; Attribute "type" was already specified for element "v:shape".
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:327)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
    at org.apache.poi.util.DocumentHelper.readDocument(DocumentHelper.java:137)
    at org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:136)
    ... 16 more
java.lang.NullPointerException
    at dhfl_idecimal.decimal_dhfl.calculator.util.UpdateInput.updateInputParamForWealthPlusAce(UpdateInput.java:23)
    at dhfl_idecimal.decimal_dhfl.calculator.Calculator.processWealthPlusAce(Calculator.java:38)
    at dhfl_idecimal.decimal_dhfl.calculator.Calculator.main(Calculator.java:167)
org.apache.poi.POIXMLException:java.lang.reflect.InvocationTargetException
位于org.apache.poi.poimmlfactory.createDocumentPart(poimmlfactory.java:63)
在org.apache.poi.poimmldocumentpart.read(poimmldocumentpart.java:625)
在org.apache.poi.poimmldocumentpart.read上(poimmldocumentpart.java:637)
在org.apache.poi.POIXMLDocument.load上(POIXMLDocument.java:186)
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:290)
在com.gemini.util.WorkbookObject.createExcelObj(WorkbookObject.java:77)上
位于com.gemini.util.ObjectPool.prepareList(ObjectPool.java:24)
位于com.gemini.util.WorkbookObject.getInstance(WorkbookObject.java:36)
在dhfl_idecimal.decimal_dhfl.calculator.calculator.processWealthPlusAce(calculator.java:33)
在dhfl_idecimal.decimal_dhfl.calculator.calculator.main(calculator.java:167)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
位于org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
在org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:60)上
... 9更多
原因:org.apache.xmlbeans.xmleexception:已为元素“v:shape”指定了属性“type”。
位于org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:138)
位于org.apache.poi.xssf.usermodel.XSSFVMLDrawing(XSSFVMLDrawing.java:121)
... 还有15个
原因:org.xml.sax.saxpasseeption;行号:1;栏目号:549;已为元素“v:shape”指定属性“type”。
位于com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
位于com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError上(XMLErrorReporter.java:400)
请访问com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
位于com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:327)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
位于com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
位于com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
位于com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
在com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
位于javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
位于org.apache.poi.util.DocumentHelper.readDocument(DocumentHelper.java:137)
位于org.apache.poi.xssf.usermodel.XSSFVMLDrawing.read(XSSFVMLDrawing.java:136)
... 还有16个
java.lang.NullPointerException
在dhfl_idecimal.decimal_dhfl.calculator.util.UpdateInput.updateInputParamForWealthPlusAce(UpdateInput.java:23)
在dhfl_idecimal.decimal_dhfl.calculator.calculator.processWealthPlusAce(calculator.java:38)
在dhfl_idecimal.decimal_dhfl.calculator.calculator.main(calculator.java:167)
PS:我已经提到了一些问题,但没有任何帮助。


我还尝试添加
org.apache.xmlbeans
jar,但没有成功

找到了答案。这不是一个精确的解决方案,但有效
当我尝试阅读其他优秀作品时,我的代码并没有任何问题,它工作得完美无缺。问题在于excel。
可能的原因: excel首先被解析为XML,当XML无效时,会出现此错误。我的excel主要是使用MS Office(Windows环境)开发的,我使用Libra Calc(Linux环境)编辑它,因此这可能是
poi
无法正确读取excel的原因。

解决方案:刚刚在Linux环境中开发了同样的excel,因为它运行良好。

您能添加您的代码片段吗?它读取一个.xlsx文件??