Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 “线程中的异常”;“主要”;使用apache poi从xlsx文件读取数据时出现org.apache.poi.POIXMLException异常_Java_Excel_Selenium Webdriver_Apache Poi_Xmlbeans - Fatal编程技术网

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,但仍然存在相同的问题。。。