springboot整合EasyPoi指定模板导出excle

springboot整合EasyPoi导出excle

摘选自EasyPoi教程:教程链接

1.添加pom依赖

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-base</artifactId>
    <version>3.2.0</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-web</artifactId>
    <version>3.2.0</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-annotation</artifactId>
    <version>3.2.0</version>
</dependency>

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: 统计数据
    fe的写法 fe标志 冒号 list数据 单个元素数据(默认t,可以不写) 第一个元素
    {{$fe: maplist t t.id }}

目录结构:
springboot整合EasyPoi指定模板导出excle_第1张图片
模板内容:
springboot整合EasyPoi指定模板导出excle_第2张图片
自己做好了模板,不会上传附件…哎,只能让大佬这样看了

java代码:

package com.email.demo.controller;

import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.*;

@Api(value = "poi导出excle", tags = {"poi导出excle"})
@Slf4j
@Validated
@RestController
@RequestMapping("/poi")
public class EasyPoiController {

    @GetMapping("/export")
    public void export() throws Exception{

        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat format2 =  new SimpleDateFormat("yyyyMMddHHmmss");
        String formatTimeStr = format.format(new Date());
        String formatTimeStr2 = format2.format(new Date());

        TemplateExportParams params = new TemplateExportParams("poi/指定模板poi导出.xlsx");
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("unitSeal", "单位公章33333");
        map.put("date", formatTimeStr);
        map.put("createDate", formatTimeStr);
        map.put("money", 2000000.00);
        map.put("person", "老周");
        map.put("phone", "13111111111");

        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
        for (int i = 0; i < 4; i++) {
            Map<String, String> lm = new HashMap<String, String>();
            lm.put("id", i + 1 + "");
            lm.put("nature", i * 10000 + "");   // 资金性质
            lm.put("num", UUID.randomUUID().toString().replace("-", ""));   // 编码
            lm.put("name", "A001" + i);
            lm.put("projectName", "项目名称" + i);
            lm.put("userName", "用户姓名" + i);
            lm.put("bankId", "银行账号" + i);
            lm.put("bankName", "开户银行" + i);
            lm.put("application", "200" + i);
            lm.put("approved", "500" + i);

            listMap.add(lm);
        }
        map.put("maplist", listMap);

        Workbook workbook = ExcelExportUtil.exportExcel(params, map);
        File savefile = new File("D:/excel/");
        if (!savefile.exists()) {
            savefile.mkdirs();
        }
        FileOutputStream fos = new FileOutputStream("D:/excel/模板导出" + formatTimeStr2 +".xlsx");
        workbook.write(fos);
        System.out.println("导出excle文件成功!");
        fos.close();

    }
}

测试

swagger发送请求:
springboot整合EasyPoi指定模板导出excle_第3张图片
是OK的!

控制台也打印出来OK
springboot整合EasyPoi指定模板导出excle_第4张图片
D盘也多出一个文件:
springboot整合EasyPoi指定模板导出excle_第5张图片
生成的数据:
springboot整合EasyPoi指定模板导出excle_第6张图片
也是OK的!!!

欢迎大佬们留言评论,共同学习!!!感谢!!!

===========================
原创文章,转载注明出处!

你可能感兴趣的:(技术)