首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Jxls]为什么找不到SetFunction方法?

[Jxls]为什么找不到SetFunction方法?
EN

Stack Overflow用户
提问于 2019-10-11 13:03:47
回答 1查看 341关注 0票数 1

我在互联网上看到了很多关于自定义函数的代码示例。例如:

代码语言:javascript
复制
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);

然而,它的演示项目显示:

代码语言:javascript
复制
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版本,但是当我将jxlsjxls-poi放在build.gradle中时,它会自动导入2.6.0

我想知道

如何像第一个代码段一样在自定义函数中使用Jxls

谢谢你的帮忙!

这是我的分级文件

代码语言:javascript
复制
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')
}
EN

回答 1

Stack Overflow用户

发布于 2019-10-14 13:28:32

来自jxls-示例 on master分支的master具有正确的代码,应该可以很好地工作。

代码语言:javascript
复制
            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-演示回购中的代码不再受欢迎,不再受支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58341877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档