0

我正在尝试将JXLS与我的自定义评估器一起用于 Excel 下载,遵循官方页面。

我不知道为什么它不为我提供 Transformer 对象。长期以来一直试图从异常中找出问题但无法解决。

电子表格

在此处输入图像描述

马文

<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls</artifactId>
    <version>2.4.3</version>
</dependency>
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-poi</artifactId>
    <version>1.0.14</version>
</dependency>

爪哇

InputStream is2 = new FileInputStream("C:/Users/User/Downloads/ExcelTest.xlsx");
OutputStream os = new FileOutputStream("C:/Users/User/Downloads/ExcelTest_Out.xlsx");

Transformer transformer = TransformerFactory.createTransformer(is2, os); // this throws error and returns null object
ExpressionEvaluator evaluator = new IMCScriptEvaluator(ctx);

transformer.getTransformationConfig().setExpressionEvaluator(evaluator);

异常跟踪

11:23:15.496 [tomcat-http--35] 错误 org.jxls.util.TransformerFactory - org.jxls.transform.poi.PoiTransformer 类的方法 createTransformer 抛出异常 java.lang.reflect.InvocationTargetException: 在 sun 时为 null。 reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:43) ~[na:1.8.0_144] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144] at org.jxls.util.TransformerFactory.createTransformer(TransformerFactory .java:35) ~[jxls-2.4.3.jar:na] at com.imc.iss.web.report.impl.JXLSFiller.generateWorkbook(JXLSFiller.java:411) [core-0.0.2-SNAPSHOT.jar :0.0.2-SNAPSHOT] 在。. . [核心-0.0.2-快照。

4

1 回答 1

0

同一 Apache POI 依赖项的多个版本造成​​了问题。

JXLS 内部也使用了 Apache POI,它也被显式添加到项目的依赖项中,存在版本冲突。

因此,跳过 JXLS Apache-POI 并用最新的(根据 JXLS 依赖项的需要)升级现有的使其工作。

于 2018-06-21T06:54:06.327 回答