org/apache/poi/openxml4j/exceptions/InvalidFormatException 使用 JXLS
org/apache/poi/openxml4j/exceptions/InvalidFormatException using JXLS
我正在使用 JXLS Java 库生成 excel 报告。我正在尝试 运行 示例 getting started 教程(对象集合输出演示)。正如教程中所建议的,我正在使用 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);
}
}
当我 运行 我的 eclipse 中的程序时,我得到以下异常:
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
环境:Windows7
IDE:日食霓虹灯
在你的问题中没有看到太多代码方式,所以我将在这里拍摄空白。看起来你的版本不匹配,文件 object_collection_template1.xls
是用不同版本的 Excel 创建的,而不是 JXLS 兼容的版本,至少在它写的时候是这样。
您似乎遇到了 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>
然后你可以一个一个添加你自己的依赖,看看它在哪个点坏了。
我正在使用 JXLS Java 库生成 excel 报告。我正在尝试 运行 示例 getting started 教程(对象集合输出演示)。正如教程中所建议的,我正在使用 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);
}
}
当我 运行 我的 eclipse 中的程序时,我得到以下异常:
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
环境:Windows7
IDE:日食霓虹灯
在你的问题中没有看到太多代码方式,所以我将在这里拍摄空白。看起来你的版本不匹配,文件 object_collection_template1.xls
是用不同版本的 Excel 创建的,而不是 JXLS 兼容的版本,至少在它写的时候是这样。
您似乎遇到了 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>
然后你可以一个一个添加你自己的依赖,看看它在哪个点坏了。