关于jxls2.6.0的学习以及遇到的问题(二)

访问jxls官网:http://jxls.sourceforge.net/

官网中也有例子:https://bitbucket.org/leonate/jxls-demo/src/master/。

笔者会在最后一篇总结中将笔者的项目和Excel文件打包上传。

按照官网中的顺序。第一个例子居然是自定义函数。而不是if each这样的命令。笔者也是很惊诧,通过官网给出的例子。笔者这里进行了测试

关于jxls2.6.0的学习以及遇到的问题(二)_第1张图片

注意官网上 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 = new HashMap();

        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冒号后面的是这个类中的方法

关于jxls2.6.0的学习以及遇到的问题(二)_第2张图片

由于文件下载需要积分,这里就不上传了。给个截图

关于jxls2.6.0的学习以及遇到的问题(二)_第3张图片

你可能感兴趣的:(jxls2.6.0)