Easypoi使用模板导出文档或excel表格详解

Easypoi使用模板导出docx文档或excel表格详解

话不多说先上依赖

<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.2.0</version>
</dependency>

对于响应头和文件名的设置,可以建一个工具类,把response和文件名传进去

	//重置响应对象
    response.reset();
    // 指定下载的文件名--设置响应头
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
    response.setContentType("application/octet-stream");
    response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
    response.addHeader("Access-Control-Allow-Headers", "Content-Disposition");

doc或docx文档的模板导出

为了整洁,就不加入重置响应对象和指定下载的文件名–设置响应头的代码了

List list = new ArrayList();
		//准备数据,一个list对应一页doc的文档
        for (int i = 0; i <= 100; i++){
            Map<String, Object> map = new HashMap<>();
            map.put("name", "xkx");
            map.put("A", i);
            map.put("B", i);
            map.put("C", i);
            list.add(map);
        }
        try {
            //重置响应对象和指定下载的文件名--设置响应头
            //将上方代码粘入
            //....

			//读取模板,放置数据,然后从response获取输出流导出
            XWPFDocument doc = WordExportUtil.exportWord07("static/模板名.docx" , list);
            doc.write(response.getOutputStream());
            doc.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

exportWord07()的第一个参数为模板的相对地址,第二个参数为向模板中放置的数据
模板读取数据的形式为
在这里插入图片描述
一个list中的map对应的数据对应着一页文档的数据,有几个list就会生成几页文档
如果只需要一页,可以直接将map丢到第二个参数处

Excel的模板导出

List list = new ArrayList<Map<String, Object>>();
		//数据准备
        for (int i = 0; i <= 100; i++){
            Map<String, Object> map = new HashMap<>();
            map.put("name", "xkx");
            map.put("A", i);
            map.put("B", i);
            map.put("C", i);
            map.put("D", i);
            list.add(map);
        }
        HashMap<String, Object> map = new HashMap<>();
        map.put("list", list);
        try {
        	//读取模板
            TemplateExportParams params = new TemplateExportParams("static/处级干部 - 成绩统计表.xls");
            //设置sheet名,以数组的形式,可多个
            params.setSheetName(new String[]{"测试sheet名"});

            //重置响应对象,指定下载的文件名--设置响应头
            //将上方代码粘入
            //.....
		
			
            Workbook workbook = ExcelExportUtil.exportExcel(params, map);
            workbook.write(response.getOutputStream());
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

exportExcel()的第一个参数为模板对象,第二个参数为数据

模板格式为
在这里插入图片描述

下面列举下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& 空格
  • ]] 换行符 多行遍历导出
  • sum: 统计数据

导出结果如下
在这里插入图片描述
上面就是Easypoi使用模板导出文档或excel表格的方法了,有什么疑问欢迎提出

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chick小鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值