模板文件导出Excel【EasyPoi实战系列】- 第478篇

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第1张图片

​历史文章(文章累计470+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇

100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇

导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇

悟纤:师傅,我发现一个挺麻烦的问题。

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第2张图片

师傅:怎么说?

悟纤:就是这个很多时候,这个Excel的样式是很复杂的,用代码生成Excel的方式对于处理比较复杂的样式,就有点爱莫能助。

师傅:这个时候,使用模板导出的方式就很有必要了,定义好一个模板,然后使用类似el表达的方式指定单元格的位置,这样样式就可以在模板文件进行编辑了。

悟纤:如果可以这么实现真的是再好不过了,师傅我已经按耐不住了,赶紧带我飞。

师傅:扶好把手,准备启程。

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第3张图片

导读

Hi,大家好,我是悟纤

我就是我,不一样的烟火。我就是我,与众不同的小苹果。

模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第4张图片

说明:本节的例子的导出实体类是基于前面的章节的实体类进行使用的,所以看的有点蒙圈的小伙伴可以查看前面的文章:

EasyPoi实战系列

01.《【EasyPoi实战系列】Spring Boot集成EasyPoi - 第467篇》

02.《【EasyPoi实战系列】Spring Boot使用EasyPoi的注解让表格更漂亮以及图片的导出 - 第468篇》

03.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现一对多的导出 - 第469篇》

04.《【EasyPoi实战系列】Spring Boot使用EasyPoi实现多Sheet导出 - 第470篇》

05.《【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇》

06.《100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇》

07.《导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇》

08.《数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇》

一、EasyPoi支持的指令

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: 国际化

二、模板基本导出

看一个常见的到处模板–专项支出用款申请书:

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第5张图片

这里面有正常的标签以及$fe遍历,$fe遍历应该是使用最广的遍历,用来解决遍历后下面还有数据的处理方式,我们要生成的是这个需要一些list集合和一些单纯的数据。

fe的写法 fe标志 冒号 list数据 单个元素数据(默认t,可以不写) 第一个元素

{{$fe: maplist t t.id }}

看下数据代码,主要是构造数据TemplateExportParams是主要的参数数据:

/** * 模板导出 * /demoTemplate/exportExcel * @param response */@GetMapping("/exportExcel")public void exportExcel(HttpServletResponse response) throws IOException {    TemplateExportParams params = new TemplateExportParams(            "WEB-INF/doc/专项支出用款申请书_map.xls");    Map map = new HashMap();    map.put("date", "2014-12-25");//申请日期.    map.put("money", 2000000.00);//合计    map.put("upperMoney", "贰佰万");//核定金额合计(大写)    map.put("company", "悟纤科技有限公司");//申请支付单位    map.put("bureau", "财政局");//××局    map.put("person", "悟纤");//联系人    map.put("phone", "1388888****");//联系电话    List> listMap = new ArrayList>();    for (int i = 0; i < 4; i++) {        Map lm = new HashMap<>();        lm.put("id", i + 1 + "");        lm.put("zijin", i * 10000 + "");        lm.put("bianma", "A001");//编码        lm.put("mingcheng", "设计");//名称        lm.put("xiangmumingcheng", "EasyPoi " + i + "期");//项目名称        lm.put("quancheng", "开源项目");//全称        lm.put("sqje", i * 10000 + "");//申请金额        lm.put("hdje", i * 10000 + "");//核定金额        listMap.add(lm);    }    map.put("maplist", listMap);    Workbook workbook = ExcelExportUtil.exportExcel(params, map);    ExcelUtil.downLoadExcel("专项支出用款申请书.xlsx",response,workbook);}

说明:要准备模板文件《专项支出用款申请书_map.xls》

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第6张图片

输出的效果:

模板文件导出Excel【EasyPoi实战系列】- 第478篇_第7张图片

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟纤学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

你可能感兴趣的:(EasyPoi,spring,boot,从零开始学Spring,Boot,easypoi,springboot)