在使用apache POI从xlsx文件读取数据时出现的线程“main”org.apache.poi.POIXMLExceptionexception中的exception

请在下面find代码…..

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 

如果我将文件的格式从xlsx更改为xls,它工作正常。不知道如何解决该错误。 我已经包括所有的瓶子像xml豆和poijar子。 仍然收到错误。 请帮忙

您尚未提供任何组件的任何版本号。 但是, XmlOptions.setLoadEntityBytesLimit(int)仅在XMLBeans 版本2.6.0 (从2012年8月起)中添加,并且不会出现在2.4.0中。

据我所知,POI已经使用2.6.0本身很长一段时间了,但不知何故旧版本的库已包含在您的运行时依赖关系,并将需要更新。

总结一下:在你的项目中包含XMLBeans 2.6.0,POI将会正常工作。