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 }}
目录结构:
模板内容:
自己做好了模板,不会上传附件…哎,只能让大佬这样看了
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发送请求:
是OK的!
控制台也打印出来OK
D盘也多出一个文件:
生成的数据:
也是OK的!!!
欢迎大佬们留言评论,共同学习!!!感谢!!!
===========================
原创文章,转载注明出处!