Springboot集成easypoi实现excel多sheet导出
1.环境配置
<!--easypoi依赖,excel导入导出-->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
2.先来定义两个导出数据的实体类
ExcelUser.java
public class Dept{
@Excel(name = "部门编号", width = 30 , needMerge = true)
private Integer id;
@Excel(name = "部门名称", width = 30 , needMerge = true)
private String deptName;
@ExcelCollection(name = "员工信息")
private List<EmpUtil> emps;
....省略getter、setter方法
ExcelLog.java
public class ExcelLog{
@Excel(name = "序号", width = 30, isColumnHidden = true)
private Integer id;
@Excel(name = "员工姓名", width = 30, groupName = "基本信息")
private String empName;
@Excel(name = "年龄", width = 30, type = 10, groupName = "基本信息")
private Integer age;
@Excel(name = "入职时间", width = 30, groupName = "工作信息", format = "yyyy/MM/dd HH:mm")
private Date hiredate;
@Excel(name = "薪酬", width = 30, type = 10, groupName = "工作信息")
private BigDecimal salary;
@Excel(name = "头像", type = 2, width = 30.0, height = 30.0, imageType = 1)
private String image;
....省略getter、setter方法
3.具体实现代码如下:
UserServiceImpl.java
/**
* excel多sheet导出
*/
@Override
public void exportSheet(HttpServletResponse response) {
//功能描述:把同一个表格多个sheet测试结果重新输出,
Workbook workBook = null;
try {
// 创建参数对象(用来设定excel的sheet1内容等信息)
ExportParams userExportParams = new ExportParams();
// 设置sheet得名称
userExportParams.setSheetName("用户表");
// 设置sheet表头名称
userExportParams.setTitle("用户列表");
// 创建sheet1使用得map
Map<String, Object> userExportMap = new HashMap<>();
// title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetName
userExportMap.put("title", userExportParams);
// 模版导出对应得实体类型
userExportMap.put("entity", Dept.class);
//转成导出vo类型
List<ExportExcelUser> users = this.changeType(this.list());
// sheet1中要填充得数据
userExportMap.put("data", users);
//---------------------------------------
// 创建参数对象(用来设定excel的sheet2内容等信息)
ExportParams logInfoExportParams = new ExportParams();
logInfoExportParams.setTitle("日志列表");
logInfoExportParams.setSheetName("日志表");
// 创建sheet2使用的map
Map<String, Object> logInfoExportMap = new HashMap<>();
logInfoExportMap.put("title", logInfoExportParams);
logInfoExportMap.put("entity", ExcelLog.class);
//查询log数据
List<LogInfo> logInfoEntitys = logInfoMapper.selectList(new QueryWrapper<>());
//转成导出vo类型
List<ExportExcelLog> logInfos = this.changeInfoType(logInfoEntitys);
// sheet2中要填充得数据
logInfoExportMap.put("data", logInfos);
//---------------------------------------
// 将sheet1、sheet2使用得map进行包装
List<Map<String, Object>> sheetsList = new ArrayList<>();
//后续增加sheet组,则后面继续追加即可;
sheetsList.add(userExportMap);
sheetsList.add(logInfoExportMap);
// 执行方法
workBook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);
//设置编码格式
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
//设置内容类型
response.setContentType("application/octet-stream");
//设置头及文件命名。
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户及操作日志导出.xls", StandardCharsets.UTF_8.name()));
//写出流
workBook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (workBook != null) {
try {
//强行关流
workBook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
导出效果:
通过查看源码 ExcelExportUtil.exportExcel()方法
可得知,进行map.put(),其中的key必须是"title",“entity"和"data”。
已经可以在源码方法可进行查看,所以设置参数类型等,都得按照这仨个key_name 进行put赋值。
Springboot集成easypoi实现excel多sheet导出的更多相关文章
- Easypoi实现excel多sheet表导入导出功能
Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写. 第一步引入Easypoi依赖 <!-- 导出文件工具 EasyPoi实现Excel读写管理测试 ...
- SpringBoot基于EasyExcel解析Excel实现文件导出导入、读取写入
1. 简介 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题 ...
- vue springboot利用easypoi实现简单导出
vue springboot利用easypoi实现简单导出 前言 一.easypoi是什么? 二.使用步骤 1.传送门 2.前端vue 3.后端springboot 3.1编写实体类(我这里是dto, ...
- SpringBoot集成文件 - 如何使用POI导出Word文档?
前文我们介绍了通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以 ...
- SpringBoot集成文件 - 集成POI之Excel导入导出
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...
- SpringBoot使用Easypoi导出excel示例
SpringBoot使用Easypoi导出excel示例 https://blog.csdn.net/justry_deng/article/details/84842111
- SpringBoot整合easyexcel实现Excel的导入与导出
导出 在一般不管大的或者小的系统中,各家的产品都一样,闲的无聊的时候都喜欢让我们这些程序员导出一些数据出来供他观赏,非说这是必须需求,非做不可,那么我们就只能苦逼的哼哧哼哧的写bug喽. 之前使用PO ...
- 超级简单POI多sheet导出Excel实战
本章节主要基于上一章节单sheet导出的基础上进行改造实现多sheet的导出,上一章节参考地址:https://www.cnblogs.com/sunny1009/p/11437005.html 1. ...
- 使用springboot和easypoi进行的数据导出的小案例
在这个案例中使用的有springboot和easypoi进行数据导出到excel中 yml文件是这样的: server: port: 8080 spring: datasource: url: jdb ...
- SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?
前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...
随机推荐
- 前端17号学习(html完结)
一.路径 1.目录文件夹和跟目录 实际工作中需要创建一个文件夹来管理他们. 目录文件夹,就是普通文件夹,里面存放页面相关素材,如html文件.图片等. 根目录,打开目录文件夹的第一层就是根目录. 2. ...
- 服务迁移之《mysql数据同步问题》
我们大概是从2022年十月份开始进行拆分的.面对一百多个服务的时候,真的是无从下手,然后公司突然空降了一个从阿里出来的架构师,然后就带着我们大刀阔斧的整体迁移. 先是服务器购买阿里云的,然后从几个核心 ...
- vtkDelaunay2D 错误 Edge not recovered, polygon fill suspect
vtkDelaunay2D 在设定SetSourceData边界处理凹多边形时,不稳定,有概率会出现"Edge not recovered, polygon fill suspect&quo ...
- 【Amadeus原创】查看正在运行的docker run参数
如何查看一个运行docker 容器的docker run启动参数,假设没有使用docker-compose这样的编排工具. 现在我如何进行重启,如何找回此前的启动命令? [root@mysql3 ~] ...
- d2js 中实现 memcached 共享 session 的过程
https://github.com/inshua/d2js/blob/master/WebContent/guide/memcached-session.md 基于 https://github.c ...
- Go语言实现国密证书加密与解析技术详解
Go语言实现国密证书加密与解析技术详解 前言 在当今数字化时代,信息安全成为企业和个人关注的焦点.国密算法作为中国自主研发的加密标准,广泛应用于各类安全场景.Go语言以其简洁.高效的特性,成为众多开发 ...
- Qt编写地图综合应用2-迁徙图
一.前言 在很多web系统中,尤其是大屏系统中,经常可以看到类似于飞机迁徙图的效果,这个在echart中也是最常用的一个效果,迁徙图既可以是一个飞机也可以是其他形状,然后有一条动态的移动轨迹来表示流向 ...
- Qt开发经验小技巧131-140
Qt新版本往往会带来一些头文件的更新,比如以前使用QPainter绘制,不需要额外包含QPainterPath头文件,而5.15版本开始就需要显示主动引入#include "qpainter ...
- 主打一个“小巧灵动”:Vite + Svelte
作者:来自 vivo 互联网大前端团队- Wei Xing 在研发小型项目时,传统的 Vue.React 显得太"笨重".本文主要针对开发小型项目的场景,谈谈 Vite+Svel ...
- 即时通讯技术文集(第26期):实时音视频技术合集(Part1) [共16篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第26 期. [- 1 -] 实时语音聊天中的音频处理与编码压缩技术简述 [链接] http:/ ...