http://chendd.cn/information/viewInformation/other/233.a
本章节将在导出逻辑中演示使用Jxls2时在模板中声明的表达式解析器规范,这个技术实现或许应该说是Jxel表达式的自定义解析,反正总而言之就是我们可以在自己的模板中使用表达式时采用自定义的规范,就好比明明就是别人封装好的东西你给改成自己喜欢的表达式格式,让一些不清楚的人感觉到:“我真心不懂,但我能懂这好牛的样子”,没啥别的用途了。本例中实现了两个场景,分别是解析单独的变量和集合数据的循环。
Java代码参考为:
package cn.chendd.examples;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;
import cn.chendd.examples.vo.User;
/**
* 自定义表达式解析
*/
public class SimpleCustomExpressionJxls {
public static void main(String[] args) throws Exception {
//模板文件
InputStream is = SimpleCustomExpressionJxls.class.getClass().getResourceAsStream("/cn/chendd/examples/templates/simpleCustomExpression.xls");
Context context = new Context();
//设置参数变量
context.putVar("x", 10);
context.putVar("y", 5);
//设置绑定集合
List<User> dataList = new ArrayList<User>();
dataList.add(new User("zhangchunhua" , "女" , 120D));
dataList.add(new User("zhouyu" , "男" , 100D));
dataList.add(new User("sunce" , "男" , 110D));
dataList.add(new User("machao" , "男" , 130D));
dataList.add(new User("caifuren" , "女" , 120D));
dataList.add(new User("zuoci" , "保密" , 150D));
context.putVar("dataList", dataList);
OutputStream os = new FileOutputStream(new File("d:\\test\\out_simpleCustomExpression.xls"));
JxlsHelper.getInstance().buildExpressionNotation("[{", "}]").processTemplate(is, os, context);
//释放资源
os.flush();
os.close();
is.close();
}
}
代码说明
代码比较简单,定义了x、y和dataList 3个变量,并且前缀使用[{,后缀使用}]的特殊字符,完整写法为:[{prop}]。
模板参考为:
模板说明
模板中x、y为直接显示的变量,dataList为集合类型使用each循环显示。
运行示例为:
运行说明
示例分别显示了3个自定义表达式的显示效果。
相关下载
out_simpleCustomExpression.xls
本示例代码会在后文中提供。