使用Apache POI读取XLSX文件时发生异常

Kri*_*off 1 java exception xmlbeans xlsx apache-poi

我目前正在与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);
Run Code Online (Sandbox Code Playgroud)

我的异常被抛出在上面代码块的最后一行。

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
Run Code Online (Sandbox Code Playgroud)

有人遇到过这种情况吗?我拥有最新的XMLBeans版本,几乎感觉到我可能需要找到一个旧版本,因为它说缺少一种方法。我不确定是否有替代/便捷的方法来读取XLSX,或者在处理任何数据之前将其简单地转换为CSV。

Gag*_*arr 5

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

您正在遇到Apache POI错误#59195,大约一个月前已应用了临时解决方法,该错误已包含在3.15 beta 1版本中。(也从提交时间起每晚进行构建)。完整修复将需要更长的时间,如果您有兴趣,请关注该错误!