Java 使用Apache POI读取XLSX文件时出现异常

Java 使用Apache POI读取XLSX文件时出现异常,java,exception,apache-poi,xlsx,xmlbeans,Java,Exception,Apache Poi,Xlsx,Xmlbeans,我目前正在使用Apachi,因为我需要从XLSX文件中读取数据,然后将其转换为CSV。下面是我用来创建XSSFWorkbook的代码,每次都会导致异常。据我所知,XMLBeans是原因之一。它已被弃用,但在本例中它是POI的依赖项 public static void appendCSV(File inputFile, String outputFile, String tag) { System.out.println(inputFile.getAbsolutePath());

我目前正在使用Apachi,因为我需要从XLSX文件中读取数据,然后将其转换为CSV。下面是我用来创建XSSFWorkbook的代码,每次都会导致异常。据我所知,XMLBeans是原因之一。它已被弃用,但在本例中它是POI的依赖项

public static void appendCSV(File inputFile, String outputFile, String tag)
{
    System.out.println(inputFile.getAbsolutePath());
       InputStream inp = null;
        try {
            inp = new FileInputStream(inputFile);
            XSSFWorkbook wb = new XSSFWorkbook(inp);
我的异常在上面块的最后一行抛出

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 BigBangarang.appendCSV(BigBangarang.java:68)
at BigBangarang.main(BigBangarang.java:268)

Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)
... 5 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.SharedStringsTable.readFrom(SharedStringsTable.java:127)
at org.apache.poi.xssf.model.SharedStringsTable.<init>(SharedStringsTable.java:108)
... 11 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) 在BigBangarang.appendCSV(BigBangarang.java:68) 在BigBangarang.main(BigBangarang.java:268) 原因:java.lang.reflect.InvocationTargetException 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 位于java.lang.reflect.Constructor.newInstance(Constructor.java:526) 位于org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) 在org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62)上 ... 还有5个 原因: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.SharedStringsTable.readFrom(SharedStringsTable.java:127) 位于org.apache.poi.xssf.model.SharedStringsTable。(SharedStringsTable.java:108) ... 还有11个
以前有人遇到过这种情况吗?我有最新版本的XMLBeans,我几乎觉得我可能需要找到一个旧版本,因为它说缺少一个方法。我不确定是否有其他/更简单的方法来读取XLSX,或者在处理任何数据之前将其转换为CSV

您需要将XMLBeans版本升级到2.6,或者将Apache POI版本升级到3.15 beta 1或更高版本


You's hitting,大约一个月前应用了一个临时解决方案,并包含在3.15 beta 1版本中。(也是从提交开始的夜间构建)。一个完整的修复将需要更长的时间,如果你感兴趣的话,请关注这个bug

您需要将XMLBeans版本升级到2.6,或者将Apache POI版本升级到3.15 beta 1或更高版本


You's hitting,大约一个月前应用了一个临时解决方案,并包含在3.15 beta 1版本中。(也是从提交开始的夜间构建)。一个完整的修复将需要更长的时间,如果你感兴趣的话,请关注这个bug

什么是Apache POI和java版本?您有一个库冲突。如果您使用的是Maven,请发布pom.xml.poi3.14,Java7。下面是所有引用库的屏幕截图,它可能与我以前的一些ApacheCommons库冲突?什么是Apache POI和java版本?您有一个库冲突。如果您使用的是Maven,请发布pom.xml.poi3.14,Java7。下面是所有引用库的屏幕截图,它可能与我以前的一些ApacheCommons库冲突?当我寻找XMLBeans时,我最初找到了2.4。是否有比2.6更新的版本也可以使用?据我所见,它已被弃用。ApacheXMLBeans 2.6是可用的最新版本。有传言说将发布BugFix2.6.1版本,目前还没有日期。xmlbeans上没有新的开发,只有在使用它的项目上!当我寻找XMLBeans时,我最初找到了2.4。是否有比2.6更新的版本也可以使用?据我所见,它已被弃用。ApacheXMLBeans 2.6是可用的最新版本。有传言说将发布BugFix2.6.1版本,目前还没有日期。xmlbeans上没有新的开发,只有在使用它的项目上!