Java Apache POI XSSF加载问题
我们正在尝试使用ApachePOI读取xlsx文件。一切正常。但有时当我们上传一个xlsx文件时,会出现以下错误Java Apache POI XSSF加载问题,java,apache-poi,xlsx,Java,Apache Poi,Xlsx,我们正在尝试使用ApachePOI读取xlsx文件。一切正常。但有时当我们上传一个xlsx文件时,会出现以下错误 java.io.IOException: Unable to parse xml bean at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:118) at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument
java.io.IOException: Unable to parse xml bean
at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:118)
at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument$Factory.parse(Unknown Source)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:347)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:190)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:290)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at io.vertx.core.eventbus.impl.HandlerRegistration.deliver(HandlerRegistration.java:213)
at io.vertx.core.eventbus.impl.HandlerRegistration.handle(HandlerRegistration.java:192)
at io.vertx.core.eventbus.impl.EventBusImpl.lambda$deliverToHandler$3(EventBusImpl.java:503)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$3(ContextImpl.java:359)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException: The prefix "x15" for element "x15:workbookPr" is not bound.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at org.apache.poi.util.DocumentHelper.readDocument(DocumentHelper.java:137)
at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:115)
... 25 common frames omitted
特别是关于这个问题,不是关于Apache poi jar文件版本3.16或3.14,您提到了这个java.io.IOException:无法解析xml bean和org.Apache.poi.POIXMLException,这看起来与您的代码有关。特别是关于这个问题,不是关于Apache poi jar文件版本3.16或3.14,您提到了这个java.io.IOException:无法解析xml bean和org.apache.poi.POIXMLException这看起来与您的代码有关。我认为这与代码无关。如果我理解正确,一个与poi相关的xml模式文件抛出了这个异常。需要了解特定xlsx文件失败的原因。好的,那么你认为它与poi xml模式文件有关,然后在Apache poi中报告错误,或者请在那里搜索文档,你会得到正确的解决方案。我认为它与代码无关。如果我理解正确,一个与poi相关的xml模式文件抛出了这个异常。需要获得特定xlsx文件失败的原因。确定后,您认为它与poi xml架构文件有关,然后在Apache poi中报告错误或请搜索该文件,您将获得正确的解决方案。您可以尝试此
工作簿=WorkbookFactory.create(文件)代码>这也给出了同样的异常。这个文件来自哪里?如果在Excel中打开文件并执行另存为,问题是否会消失?您好@Manjunath,您是否找到了解决方案或问题的根本原因?面对完全相同的问题,您可以尝试以下方法:Workbook-Workbook=WorkbookFactory.create(file)代码>这也给出了同样的异常。这个文件来自哪里?如果在Excel中打开文件并执行另存为,问题是否会消失?您好@Manjunath,您是否找到了解决方案或问题的根本原因?面对完全相同的问题
org.apache.poi.POIXMLException: org.apache.xmlbeans.XmlException: error: Use of undefined namespace prefix: x15
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:402)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:178)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:249)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:302)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at io.vertx.core.eventbus.impl.HandlerRegistration.deliver(HandlerRegistration.java:213)
at io.vertx.core.eventbus.impl.HandlerRegistration.handle(HandlerRegistration.java:192)
at io.vertx.core.eventbus.impl.EventBusImpl.lambda$deliverToHandler$3(EventBusImpl.java:503)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$3(ContextImpl.java:359)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.xmlbeans.XmlException: error: Use of undefined namespace prefix: x15
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3499)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1277)
at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1264)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:92)
at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument$Factory.parse(Unknown Source)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:336)
... 24 common frames omitted
XSSFWorkbook workbook = new XSSFWorkbook(file);