Я видел много примеров кода в Интернете о Пользовательской функции в Jxls. Например:
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
, как первый сегмент кода?
Спасибо за вашу помощь!
Вот мой файл Gradle
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')
}