在统计数据的时候,我们需要导出一些特定格式的excel。我们可以使用poi写代码来处理格式,这样会导致写很多的代码来搞定,如果将某两个特定的表格数据的位置或者颜色标记做小小的改动,我们只有调整一下代码才能搞定。那有没有一种简单的方法导出特定排列的excel呢?答案当然是有的,这里推荐easypoi来处理这个问题。如有更好解决方案欢迎留言讨论哦。
springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)
1.easypoi简介
easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法。easypoi官方文档
2.为什么选用easypoi
主要看重easypoi的两个功能,Excel模板导出,html预览。Excel模板导出,是为了少写一下重复大量的代码,导出一些复杂排列的表格。html预览,有时候我们想先看一些导出效果,不想导出,就需要这个html预览的功能。当然easypoi还有一些其他的功能,请到esaypoi的官方文档去查看吧。
3.引入依赖
我们这里引入是spring boot 的依赖,其他的可以到官网查看,参照引入。
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
4.Excel模板导出
先定义一个excel的模板,如图所示: 然后定义好相关变量,如图所示
5.代码部分
@RequestMapping("test")
public void getExcelInfo(ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) throws IOException {
// 模板在项目中的路径
TemplateExportParams params = new TemplateExportParams(
"doc/testExcelTemplate.xlsx");
Map<String, Object> map = new HashMap<String, Object>(16);
map.put("code", "A20210101");
map.put("applyTime", "2021-01-01");
map.put("total", 40000);
map.put("company", "执笔潜行科技有限公司");
map.put("remark", "测试导出");
map.put("year", "2021");
map.put("month", "04");
map.put("day", "25");
map.put("name", "JueYue");
map.put("phone", "1879740****");
List<Map<String, String>> listMap = new ArrayList<>();
for (int i = 0; i < 4; i++) {
Map<String, String> lm = new HashMap<String, String>(16);
lm.put("amountType", i + "测试");
lm.put("code", "A001");
lm.put("subjectName", "设计");
lm.put("projectName", "EasyPoi " + i + "期");
lm.put("fullName", "Ces 项目");
lm.put("bankCard", "6216610200016587010");
lm.put("bankName", "中国银行");
lm.put("applyAmount", i * 10000 +"");
lm.put("approvedAmount", i * 10000 +"");
listMap.add(lm);
}
map.put("list", listMap);
modelMap.put(TemplateExcelConstants.FILE_NAME, "专项支出用款申请书_map.xls");
modelMap.put(TemplateExcelConstants.PARAMS, params);
modelMap.put(TemplateExcelConstants.MAP_DATA, map);
PoiBaseView.render(modelMap, request, response,
TemplateExcelConstants.EASYPOI_TEMPLATE_EXCEL_VIEW);
}
输入路径访问下载测试,结果如图:
这用我们就不用去写样式了,只需要建立好模板,填数据就可以了。