访问jxls官网:http://jxls.sourceforge.net/
官网中也有例子:https://bitbucket.org/leonate/jxls-demo/src/master/。
笔者会在最后一篇总结中将笔者的项目和Excel文件打包上传。
按照官网中的顺序。第一个例子居然是自定义函数。而不是if each这样的命令。笔者也是很惊诧,通过官网给出的例子。笔者这里进行了测试
注意官网上 evaluator.getJexlEngine().setFunctions(functionMap);是有问题的,从下载下来的例子中也可以看到此句话是被注释的。因为这里的jexlEngine使用的setFunctions是jexl2中的方法,而2.6.0使用的是jexl3。
下面是笔者的代码和excel截图
// 自定义函数
public static void jexl() throws Exception {
BufferedInputStream is = new BufferedInputStream(
new FileInputStream("。。。jexlTeplate.xlsx"));
OutputStream os = new FileOutputStream("。。。\\jexl.xlsx");
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
Transformer transformer = jxlsHelper.createTransformer(is, os);
Context context = new Context();
context.putVar("x", 5);
context.putVar("y", 10);
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig()
.getExpressionEvaluator();
Map
functionMap.put("demo", new JexlCustomFunction());
JexlBuilder jb = new JexlBuilder();
jb.namespaces(functionMap);
JexlEngine je = jb.create();
evaluator.setJexlEngine(je);
//这里笔者看了一下使用true和false使用的类不同StandardFormulaProcessor和FastFormulaProcessor,
jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
}
其中名字需要对应上,excel冒号后面的是这个类中的方法
由于文件下载需要积分,这里就不上传了。给个截图