我在互联网上看到了很多关于自定义函数的代码示例。例如:
Transformer transformer = TransformerFactory.createTransformer(is, os);
...
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
Map<String, Object> functionMap = new HashMap<>();
functionMap.put("demo", new JexlCustomFunctionDemo());
evaluator.getJexlEngine().setFunctions(functionMap);然而,它的演示项目显示:
AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
List<Area> xlsAreaList = areaBuilder.build();
Area xlsArea = xlsAreaList.get(0);
Context context = new Context();
context.putVar("x", 5);
context.putVar("y", 10);
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
Map<String, Object> functionMap = new HashMap<>();
functionMap.put("demo", new JexlCustomFunctionDemo());
// evaluator.getJexlEngine().setFunctions(functionMap);
xlsArea.applyAt(new CellRef("Sheet1!A1"), context);
transformer.write();如您所见,关键语句已被禁用,我尝试过2.6.0版本,它完全不支持setFunction
我尝试使用2.4.3版本,但是当我将jxls和jxls-poi放在build.gradle中时,它会自动导入2.6.0。
我想知道
如何像第一个代码段一样在自定义函数中使用Jxls?
谢谢你的帮忙!
这是我的分级文件
repositories {
jcenter()
maven { url 'https://repo.spring.io/release/' }
maven { url "http://repo.spring.io/libs-snapshot-local" }
maven { url "http://repo.spring.io/libs-milestone-local" }
maven { url "http://repo.spring.io/libs-release-local" }
maven { url "http://maven.jeecg.org/nexus/" }
}
dependencies {
compile project(':common-base')
compile project(':common-redis')
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
compile group: 'org.aspectj', name: 'aspectjrt', version: '1.8.9'
compile group: 'org.aspectj', name: 'aspectjweaver', version: '1.8.9'
compile 'org.freemarker:freemarker:2.3.23'
compile 'org.jxls:jxls:2.4.3'
compile 'org.jxls:jxls-poi:1.0.9'
// compile 'org.jxls:jxls-jexcel:1.0.6'
//swagger2.5.0 ApiImplicitParam的dataType不支持自定义类
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.7.0'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0'
compile 'io.springfox:springfox-bean-validators:2.7.0'
compile group: 'org.bouncycastle', name: 'com.springsource.org.bouncycastle.jce', version: '1.39.0'
compile group: 'org.apache.poi', name: 'poi', version: '3.14-beta1'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-scratchpad', version: '3.17'
compile group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.17'
compile "com.xuxueli:xxl-job-core:2.1.0" // 调度中心xxl-job
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13'
compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0'
compile group: 'com.github.tobato', name: 'fastdfs-client', version: '1.25.2-RELEASE'
//属性拷贝dozer/cglib
compile('net.sf.dozer:dozer:5.5.1')
compile('cglib:cglib:3.2.8')
}发布于 2019-10-14 13:28:32
来自jxls-示例 on master分支的master具有正确的代码,应该可以很好地工作。
Transformer transformer = TransformerFactory.createTransformer(is, os);
AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
List<Area> xlsAreaList = areaBuilder.build();
Area xlsArea = xlsAreaList.get(0);
Context context = new Context();
context.putVar("x", 5);
context.putVar("y", 10);
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();
Map<String, Object> functionMap = new HashMap<>();
functionMap.put("demo", new JexlCustomFunctionDemo());
JexlEngine customJexlEngine = new JexlBuilder().namespaces(functionMap).create();
evaluator.setJexlEngine(customJexlEngine);
xlsArea.applyAt(new CellRef("Sheet1!A1"), context);
transformer.write();旧jxls-演示回购中的代码不再受欢迎,不再受支持。
https://stackoverflow.com/questions/58341877
复制相似问题