1.依赖
如果项目有原始poi 依赖 可以使用以下兼容版本
如果项目没有引入poi 依赖 可以直接用下面依赖
2.导出方法
public static void excel() {
Map total =new HashMap<>();
List> mapList =new ArrayList<>();
for (int i =1; i <=5; i++) {
Map map =new HashMap<>();
map.put("id", i +"");
/* map.put("bin", "001 1000千克");
map.put("name", "商品" + i);
map.put("code", "goods" + i);
map.put("proDate", "2019-05-30");
map.put("recvDate", "2019-07-07");*/
mapList.add(map);
}
total.put("list", mapList);
total.put("code","code9527");
TemplateExportParams params =new TemplateExportParams("export/" +"test4.xlsx",true);
try {
Workbook workbook = ExcelExportUtil.exportExcel(params, total);
// CellRangeAddress cra = new CellRangeAddress(1, 3, 0, 0);
// workbook.getSheetAt(0).addMergedRegion(cra);
FileOutputStream fileOutputStream =new FileOutputStream("F:\\project\\工时系统资料" + File.separator +"1.xls");
workbook.write(fileOutputStream);
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
3.模板
位置在resources 创建export文件夹里面放要导出的模板
简单模板(单行遍历)
复杂模板多行遍历(有单元格合并情况)
效果图
复杂模板2
效果图
注意点 模板指令可以参考官方文档
空格分割
三目运算 {{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& 空格
]] 换行符 多行遍历导出
sum: 统计数据
如果在表格表头下面空一行在填写循环的指令 导出的数据也会空一行在填充数据
如果需要做统计的信息 如果循环次数可以确定 可以在下面合适行添加统计的信息如果循环次数不确定可以在表格表头下面做统计信息展示
获取导出数据中code 值 可以在模板合适单元格位置直接 {{code}} 即可