Apache POI poi-ooxml:4.0.0 выбрасывает org.apache.poi.ooxml.POIXMLException

Контекст:

Попытка открыть файл XLSX с помощью Apar POI poi & poi-ooxml 4.0.0 version jar's

Выпуск:

Программа выдает ошибку, как показано ниже. Я нахожу эту ошибку, когда использую версию 4.0.0, так как я смог открыть файл Excel, используя версию 3.17 или более раннюю.

Надеюсь, что проблема ясна, и ждите отзывов о том, как решить эту проблему.

Примечание. Найдено несколько связанных запросов, но они относятся к более ранним версиям POI - Link1 Link2

Код:

public static void main(String[] args) {
        try {
            // Open Excel XLSX file
            FileInputStream fis = new FileInputStream(excelFile);
            ZipSecureFile.setMinInflateRatio(0);
            XSSFWorkbook workBook = new XSSFWorkbook(fis);
            System.out.println(workBook);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Gradle:

compile 'org.apache.poi:poi:4.0.0'
compile 'org.apache.poi:poi-ooxml:4.0.0'
//    Tried adding the below jar's as well but dint help
//    compile 'org.apache.commons:commons-collections4:4.2'
//    compile 'org.apache.poi:poi-ooxml-schemas:4.0.0'
//    compile 'org.apache.xmlbeans:xmlbeans:3.0.1'

Ошибка:

org.apache.poi.ooxml.POIXMLException: org/apache/poi/POIXMLTypeLoader
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:66)
    at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:648)
    at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:286)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:307)
    at main.Test.main(Test.java:32)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56)
    at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:63)
    ... 5 more
Caused by: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader
    at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86)
    ... 11 more
Caused by: java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoader
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 13 more

0 ответов

У меня была та же проблема, пытаясь использовать POI 4.0.1.

Добавление compile "org.apache.poi:ooxml-schemas:1.4" исправил проблему для меня

все мои зависимости:

compile "org.apache.poi:ooxml-schemas:1.4"
compile "org.apache.poi:poi:4.0.1"
compile "org.apache.poi:poi-ooxml:4.0.1"

Просто обновите свою версию POI до 4.1.0 или выше.

В pom.xml это будет примерно так:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.0</version>
</dependency>
Другие вопросы по тегам