模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性
下面列举下EasyPoi支持的指令以及作用,最主要的就是各种fe的用法
- 空格分割
- 三目运算 {{test ? obj:obj2}}
- n: 表示 这个cell是数值类型 {{n:}}
- le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
- fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
- fn: 格式化数字 {{fn:(obj;###.00)}}
- fe: 遍历数据,创建row
- !fe: 遍历数据不创建row
- $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
- #fe: 横向遍历
- v_fe: 横向遍历值
- !if: 删除当前列 {{!if:(test)}}
- 单引号表示常量值 ‘’ 比如’1’ 那么输出的就是 1
- &NULL& 空格
- &INDEX& 表示循环中的序号,自动添加
- ]] 换行符 多行遍历导出
- sum: 统计数据
- cal: 基础的+-X% 计算
- dict: 字典
- i18n: 国际化
整体风格和el表达式类似,大家应该也比较熟悉
采用的写法是{{}}代表表达式,然后根据表达式里面的数据取值
关于样式问题
easypoi不会改变excel原有的样式,如果是遍历,easypoi会根据模板的那一行样式进行复制
测试项目
在cn.afterturn.easypoi.test.excel.template 这个目录下面
https://gitee.com/lemur/easypoi-test/tree/master/src/test/java/cn/afterturn/easypoi/test/excel/template
##指令讲解
- dict 字段
例如 dict:sourceType;t.supMaterialList.sourceType
dict 代表这个是字段处理,sourceType 字典key,t.supMaterialList.sourceType对应取值
需要自己实现IExcelDictHandler 这个接口来根据字典key 和数据值获取对应的字典值
public class ExcelDictHandlerImpl implements IExcelDictHandler {
@Override
public String toName(String dict, Object obj, String name, Object value) {
if ("category".equals(dict)) {
return "市场准入";
}
if ("mtype".equals(dict)) {
return value.toString().equals("1") ? "市场准入" : "证件";
}
if ("sourceType".equals(dict)) {
return "申请人提交纸质材料";
}
if ("lawType".equals(dict)) {
return "规章";
}
return null;
}
@Override
public String toValue(String dict, Object obj, String name, Object value) {
return null;
}
}
作者:悟耘信息 创建时间:2020-04-09 15:16
更新时间:2022-09-04 22:15
更新时间:2022-09-04 22:15