easyExcel 导出海量数据
easyExcel 导出海量数据
- 一、官网介绍
- 二、excel海量数据导出
- 2.1 引入依赖
- 2.2 主要代码
- 2.2.1 controller:
- 2.2.2 service:
- 2.2.3 mapper:此处省略
- 2.2.4 实体类:
- 三、总结
一、官网介绍
二、excel海量数据导出
2.1 引入依赖
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>
2.2 主要代码
2.2.1 controller:
public void importData(@Param("startTime") Date startTime, @Param("endTime") Date endTime,HttpServletResponse response) throws Exception {log.info("**: startTime-{},endTime-{}", startTime, endTime);OutputStream outputStream = response.getOutputStream();//添加响应头信息response.setHeader("Content-disposition","attachment; filename=" + "userAchive-" + startTime + "-" + endTime + ".xlsx");response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);response.setContentType("application/vnd.ms-excel;charset=UTF-8");demoService.exportHandle(startTime, endTime, outputStream);response.getOutputStream().close();}
2.2.2 service:
public void exportHandle(Date startTime, Date endTime, OutputStream outputStream) {//获取总数据量Integer count = userSocreMapper.getCount(startTime, endTime);log.info("** count: " + count);if (count > 1000000) log.info("数量过多,无法导出!!!");if (count > 10000) {int max = 10000;int countTotal = count / max + 1;//必须放到循环外,否则会刷新流ExcelWriter excelWriter = EasyExcel.write(outputStream).build();for (int i = 0; i < countTotal; i++) {List<UserSocreExcel> exportList = userSocreMapper.exportPoints(i * max, max, startTime, endTime);WriteSheet writeSheet = EasyExcel.writerSheet(0, fileName).head(UserSocreExcel.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();excelWriter.write(exportList, writeSheet);log.info("** exportList: NO:{} size:{}", i, exportList.size());}//刷新流excelWriter.finish();} else {List<UserSocreExcel> exportList = userSocreMapper.exportPoints(null, null, startTime, endTime);log.info("** exportListSize:{}", exportList.size());EasyExcel.write(outputStream, UserSocreExcel.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet(fileName).doWrite(exportList);}try {outputStream.flush();} catch (IOException e) {log.error("** outputStream.flush(): " + e.getMessage());}}
注意:service中的count判断以及max值的设置,均可根据实际需求进行更改。
2.2.3 mapper:此处省略
2.2.4 实体类:
@Data
public class UserSocreExcel {@ExcelIgnoreprivate Long id;@ExcelProperty(value = "工号",index = 0)private String empCode;@ExcelProperty(value = "姓名",index = 1)private String empName;@ExcelProperty(value = "分数",index = 2)private Long score;@ExcelProperty(value = "创建时间",index = 3)private String createTime;@ExcelProperty(value = "更新时间",index = 4)private String updateTime;
}
注意注解中保证index的顺序
三、总结
至此,即可实现excel海量数据批量导出。总体思路为分批次进行刷入,此处为每次刷1万数据,也可单次刷入10万数据,可视情况而定。
以上,仅供参考。
easyExcel 导出海量数据相关推荐
- easyExcel导出表格及合并单元格
easyExcel导出表格及合并单元格 前言 废话不多说,直接上效果图. 效果图 合并之前导出的: 合并之后导出的: 代码的实现主要是合并之后的,为了更好的分清数据之间的关系. 二.代码 目录 < ...
- easyexcel导出
文章目录 easyexcel导出 一.依赖 二.导出 普通导出 自定义表头导出 多sheet导出 easyexcel导出 一.依赖 <!--阿里巴巴EasyExcel依赖--><de ...
- R先生一步步教你用EasyExcel导出包含多图片的Excel
R先生一步步教你用EasyExcel导出包含多图片的Excel 光与光之间的黑暗,路人永不得知 书接上文说到,R先生之前有写过一篇用EasyExel导出包含图片的Excel文件,由于在官方文档并没有找 ...
- EasyExcel导出自定义合并单元格文件
目标 需要使用阿里的EasyExcel库来导出excel,并要自定义合并单元格. 思路 这里自定义的CellWriteHandler需要将数据进行如下处理: 1.Excel每一行数据必须对应一个对象: ...
- easy-excel导出excel中日期列需要双击才能进行筛选
使用easy-excel导出的excel中,给日期那一例设置单元格格式,发现需要双击后才能生效,翻了一些资料说easy-excel程序导出的日期值是文本值,所以需要双击让excel转化一下,这边查了e ...
- Springboot中EasyExcel导出及校验后导入前后台功能实现
EasyExcel导出及校验后导入前后台功能实现 一.引入maven依赖 1. 在pom.xml中引入maven依赖 二.实体类及工具类 1. 导入时的自定义校验注解 2. 格式校验工具类 3. Ex ...
- easyExcel导出某列是固定下拉选框的excel模板
easyexcel导出固定下拉选框的模板,项目中遇到的,记录一下. 1.示例 如图,第四列的值是下拉选框,是服务器端根据真实数据动态生成的. 2.实现方案 2.1 依赖 <dependency& ...
- swagger easyExcel导出Excel文件打不开,文件损坏
alibaba/easyexcel文件导出 swagger easyExcel导出Excel文件打不开,文件损坏 文件下载打不开,将文件输出到本地发现可以打开,而且swagger下载的文件大小比本地文 ...
- Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求
这次开任务使用的是EasyExcel导出Excel文档,但是在任务过程中,生成的文档的格式要求并不符合产品和测试的期望值,如图: 想着自己地位低下,也无能力反驳.只好硬着头皮查阅资料来达到他们的想要的 ...
最新文章
- TMB计算的小工具-calculate_TMB.exe
- win10计算机屏幕暗怎么办,Win10系统调节不了屏幕亮度怎么办
- tone mapping简介
- 预测UI设计师未来发展方向
- jquery基本过滤选择器(jquery筛选选择器)
- 基因学:大数据的大希望
- java程序 登录界面_用java写一个登陆界面代码。
- 如何利用迅雷下载百度云获取实际下载地址
- vb.net 教程 6-14 终止线程的例子
- Ubuntu20.04禁用触摸屏键盘
- Excel多级下拉菜单的制作
- 在excel中如何筛选重复数据_EXCEL里如何快速统计重复的次数?
- innobackupex备份与恢复
- 4.7开发者日:北极光创投吴峰的投资只管杀不管埋
- SPI Flash芯片W25Q32英文版数据手册解读(二)---------存储器知识,寄存器
- P1293 班级聚会
- K8s - 让Master也能当作Node使用的方法
- 将电脑通达信条件预警同步到手机
- 权重 缩写 英文_常用英语术语缩写--采购
- 知乎上40个有趣回复,很精辟!
热门文章
- Excel 页面打开空白,解决的配置方法
- 网卡带宽测试软件iPerf背景与使用
- 【集群监控——Cacti、Nagios、Zabbix安装配置过程】
- Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) a
- 惨遭打出“玲珑塔”,EDG这操作连小学生都笑了!
- 二麻子,你再不更新我就……
- 计算机黑屏时间怎么修改,怎么设置电脑黑屏时间,赶紧试试这个方法吧
- Roslaunch使用GDB调试
- 计算机毕业设计springboot汽车销售卖车管理系统【前后端分离·新项目·代码讲解·安装调试·文档指导】
- 【2022/1/7】Android平台启动图制作.9.png图片