freemarker个性化导出excel

前言

导出excel是比较常见的需求,有时候需要导出的excel有固定的格式,这里记录一下FreeMarker导出excel,暂时不了解FreeMarker基本语法的请先去学习一下。

正文

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。(百度百科)

FreeMarker导出的步骤大概就三步:制作模板–>取数据–>渲染导出excel

它能导出的不限于excel,上面说了FreeMarker是一个模板引擎,能够生成各类文件,大概如下:
在这里插入图片描述

图片来自网络
制作模板

制作模板,以excel为例,先将有格式的excel另存为xml格式的文件
在这里插入图片描述

excel样品(假装有格式)

实际中需求的格式可能比较复杂,但是没有关系,因为制作模板不会对其样式进行操作,只涉及修改数据填充的部分,所以样式不管再复杂,都是一样的。

将excel另存为xml,这里我选择的是 “XML 电子表格2003” ,因为有些电脑上的安装的wps或Excel版本比较低,所以尽量选择兼容性高的xml格式。

在这里插入图片描述

导出的xml文件仔细看,就能将其和原文件联系起来,对应为sheet1的3行3列数据。
在这里插入图片描述

最后我需要导出的文件是这样的:
在这里插入图片描述

修改xml文件如下:
在这里插入图片描述

设置了rowcount(表格的行数),修改了表格内容标签,遍历list进行渲染。

最后修改文件后缀为.ftl,制作模板大功告成。

取数据

取数据这一步就根据模板定义的变量进行渲染就好了,这一步就不多介绍了,我模拟了一些数据

    private Map<String, Object> getDataMap() {
   
        Map map = new HashMap(16);
        //list demo
        List<Map<String,String>> dataList = new LinkedList();
        for (int i = 0; i<10; i++){
   
            Map eleMap = new HashMap(16);
            eleMap.put("name","姓名"+i+1);
            eleMap.put("education","本科");
            eleMap.put("age",i+20);
            dataList.add(eleMap);
        }
        map.put("datalist", dataList);
//        表格总共有多少行
        map.put("rowcount", dataList.
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值