Spring Boot EasyPOI 使用指定模板导出Excel

相信大家都遇到过,用户提出要把界面上的数据导成一个Excel,还得是用户指定的Excel格式,用原生的POI,需要自己去实现,相信是比较麻烦的,所以我们可以使用开源的EasyPOI.

先上个图,看看是不是大家想要的效果.

如图,是一个Demo导出模板,可以看到里面用了一些easy poi的公式,有了这个模板之后,我们只需要把需要的数据源形成后,调用接口就可以实现导出指定格式的模板了!

一、先引入maven

我们需要在指定模块中的pom.xml引入依赖包,如下:

XML 复制代码
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

二、关键代码调用

引入依赖包之后,我们可以先看一下关键的代码使用,如下:

java 复制代码
Map<String, Object> map = new HashMap<String, Object>();//关键数据源对象
//引入模板,注意,此处路径是相对与项目的resource目录下的,不需要自行去找到绝对路径
TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
OutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();

如上的关键代码,也就几句而已,可以看到,我们只需要找到我们的模板路径,然后把我们的业务数据封装好传给工具类,就完成了。

三、示例

有了上述的关键代码,我们根据开头的示例图,封装成指定格式,如下:

java 复制代码
Map<String, Object> map = new HashMap<String, Object>();//关键数据源对象

//封装业务数据
Map<String,String> objInfo = new HashMap<String, Object>();
objInfo.put("Aennr","1000009");
objInfo.put("kgChr02","备注XXX");
objInfo.put("Rlkey","状态XXX");

List<Map<String,String>> list = new ArrayList<>();
Map<String,String> m1= new HashMap<String, Object>();
m1.put("Ztype","变更");
m1.put("Idnrk","123");
m1.put("Zmaktx","描述");
list.add(m1);

map.put("info", objInfo);
map.put("list", list);

TemplateExportParams params = new TemplateExportParams("template/模板名称.xls"); //模板路径
params.setSheetNum(new Integer[]{0,1});//设置多个Sheet(若有多个Sheet,需要加入此代码)
Workbook workbook = ExcelExportUtil.exportExcel(params, map);//easyPOI的工具类
OutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
out.close();

我们可以看到,只需要往map中丢入指定内容即可显示在模板中。

EasyPOI支持很多内容,公式等,详情可查看easyPOI的官方文档.

easy poi 官方文档

相关推荐
一个尚在学习的计算机小白15 小时前
java集合
java·开发语言
IUGEI15 小时前
synchronized的工作机制是怎样的?深入解析synchronized底层原理
java·开发语言·后端·c#
q***136115 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
z***I39415 小时前
Java桌面应用案例
java·开发语言
间彧16 小时前
GraalVM Native Image:跨平台能力与编译模式深度解析
后端
间彧16 小时前
GraalVM Native Image 与传统 JVM 内存管理:云原生时代的技术选型指南
后端
r***123816 小时前
SpringBoot最佳实践之 - 使用AOP记录操作日志
java·spring boot·后端
间彧16 小时前
Java进程内存深度解析:从JVM组件内存到RSS的全面视角
java
b***748816 小时前
前端GraphQL案例
前端·后端·graphql
间彧16 小时前
对比GraalVM Native Image与传统JVM,在内存管理方面各自适合哪些具体业务场景?
java