Java “线程中的异常”;“主要”;使用apache poi从xlsx文件读取数据时出现org.apache.poi.POIXMLException异常
请在下面找到代码Java “线程中的异常”;“主要”;使用apache poi从xlsx文件读取数据时出现org.apache.poi.POIXMLException异常,java,excel,selenium-webdriver,apache-poi,xmlbeans,Java,Excel,Selenium Webdriver,Apache Poi,Xmlbeans,请在下面找到代码 package sanityTests; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
package sanityTests;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
public class ApachePOI {
public static void main(String[] args) throws Exception {
File src = new File("C:/Users/Ishan/Desktop/TestData.xlsx");
FileInputStream fis = new FileInputStream(src);
XSSFWorkbook wb = new XSSFWorkbook(fis); // To deal with XLSX workbook
//HSSFWorkbook wb1 = new HSSFWorkbook(fis1); // To deal with XLS workbook
XSSFSheet sheet1 =wb.getSheetAt(0);
String data0 = sheet1.getRow(0).getCell(0).getStringCellValue();
System.out.println(data0);
wb.close();
}
}
运行程序时,我遇到以下问题:-
Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:65)
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:601)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:279)
at sanityTests.ApachePOI.main(ApachePOI.java:20)
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:56)
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)
... 4 more
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:50)
at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:85)
... 10 more
线程“main”org.apache.poi.POIXMLException中的异常:java.lang.reflect.InvocationTargetException
位于org.apache.poi.poimmlfactory.createDocumentPart(poimmlfactory.java:65)
在org.apache.poi.POIXMLDocumentPart.read上(POIXMLDocumentPart.java:601)
位于org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174)
位于org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:279)
位于sanityTests.ApachePOI.main(ApachePOI.java:20)
原因: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:56)
在org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)上
... 4更多
原因:java.lang.NoSuchMethodError:org.apache.xmlbeans.xmloadOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions;
在org.apache.poi.POIXMLTypeLoader上(POIXMLTypeLoader.java:50)
位于org.apache.poi.xssf.model.ThemesTable.(ThemesTable.java:85)
... 10多
如果我将文件的格式从xlsx更改为xls,它可以正常工作。不确定如何解决此错误。我已经包括了所有的jar,比如xmlbeans和poi-jar。还是会出错。请帮助您尚未提供任何组件的版本号。但是,
XmlOptions.setLoadEntityBytesLimit(int)
仅在XMLBeans中添加(从2012年8月开始),将不会出现在2.4.0中
据我所知,POI已经使用2.6.0很长时间了,但不知何故,该库的较旧版本已经包含在您的运行时依赖项中,需要更新
总而言之:在您的项目中包括XMLBeans 2.6.0,POI将很好地工作。事实上,POI仍然试图与XMLBeans的早期版本保持兼容,因此它应该可以工作,但在最新版本中似乎仍然被破坏,请参阅。正如您所说,使用2.6.0版应该可以解决这个问题。这是一个好地方。当我阅读变更日志时,我可以看到2.3.0仍然列为最低版本,建议使用2.6.0-但该错误解释了差异。更新:我尝试使用版本5.3.0,但仍然存在相同的问题。。。