簡體   English   中英

使用JXLS的org / apache / poi / openxml4j / exceptions / InvalidFormatException

[英]org/apache/poi/openxml4j/exceptions/InvalidFormatException using JXLS

我正在使用JXLS Java庫生成Excel報告。 我正在嘗試運行示例入門教程(對象集合輸出演示)。 如本教程中所建議,我正在使用maven在項目構建配置文件中指定所需的庫。 以下是使用的Java代碼

List<Employee> employees = generateSampleEmployeeData();
    try(InputStream is = ObjectCollectionDemo.class.getResourceAsStream("object_collection_template1.xls")) {
        try(OutputStream os = new FileOutputStream("target/" + fileName)) {
            Context context = new Context();
            context.putVar("employees", employees);
            JxlsHelper.getInstance().processTemplate(is, os, context);
        }
    }

當我在日食中運行程序時,出現以下異常:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/exceptions/InvalidFormatException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at org.jxls.util.TransformerFactory.createTransformer(TransformerFactory.java:34)
    at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:217)
    at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:104)
    at com.ucas.ObjectCollectionDemo.main(ObjectCollectionDemo.java:42)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions.InvalidFormatException
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 9 more

下面是Maven依賴關系的快照 在此處輸入圖片說明

Java版本:1.8

環境:Windows 7

IDE:Eclipse霓虹燈

在您的問題中,代碼的方式不多,因此我在這里空白。 看起來您的版本與文件object_collection_template1.xls的版本不匹配,該文件是使用不同於JXLS兼容的Excel版本創建的,至少在書面上是如此。

看來您在Apache POI處理所需的某些XML依賴項方面遇到了問題。

我可以在依賴項屏幕快照中看到它們,但是由於某些原因,當您運行程序時它們無效。 依賴之間可能存在一些沖突。

通過僅添加以下兩個依賴項來嘗試創建最小的jxls項目,並查看其是否有效

    <dependency>
        <groupId>org.jxls</groupId>
        <artifactId>jxls</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.jxls</groupId>
        <artifactId>jxls-poi</artifactId>
        <version>1.0.12</version>
    </dependency>

然后,您可以一個一個地添加自己的依賴項,看看它在哪一點中斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM