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 导出海量数据相关推荐

  1. easyExcel导出表格及合并单元格

    easyExcel导出表格及合并单元格 前言 废话不多说,直接上效果图. 效果图 合并之前导出的: 合并之后导出的: 代码的实现主要是合并之后的,为了更好的分清数据之间的关系. 二.代码 目录 < ...

  2. easyexcel导出

    文章目录 easyexcel导出 一.依赖 二.导出 普通导出 自定义表头导出 多sheet导出 easyexcel导出 一.依赖 <!--阿里巴巴EasyExcel依赖--><de ...

  3. R先生一步步教你用EasyExcel导出包含多图片的Excel

    R先生一步步教你用EasyExcel导出包含多图片的Excel 光与光之间的黑暗,路人永不得知 书接上文说到,R先生之前有写过一篇用EasyExel导出包含图片的Excel文件,由于在官方文档并没有找 ...

  4. EasyExcel导出自定义合并单元格文件

    目标 需要使用阿里的EasyExcel库来导出excel,并要自定义合并单元格. 思路 这里自定义的CellWriteHandler需要将数据进行如下处理: 1.Excel每一行数据必须对应一个对象: ...

  5. easy-excel导出excel中日期列需要双击才能进行筛选

    使用easy-excel导出的excel中,给日期那一例设置单元格格式,发现需要双击后才能生效,翻了一些资料说easy-excel程序导出的日期值是文本值,所以需要双击让excel转化一下,这边查了e ...

  6. Springboot中EasyExcel导出及校验后导入前后台功能实现

    EasyExcel导出及校验后导入前后台功能实现 一.引入maven依赖 1. 在pom.xml中引入maven依赖 二.实体类及工具类 1. 导入时的自定义校验注解 2. 格式校验工具类 3. Ex ...

  7. easyExcel导出某列是固定下拉选框的excel模板

    easyexcel导出固定下拉选框的模板,项目中遇到的,记录一下. 1.示例 如图,第四列的值是下拉选框,是服务器端根据真实数据动态生成的. 2.实现方案 2.1 依赖 <dependency& ...

  8. swagger easyExcel导出Excel文件打不开,文件损坏

    alibaba/easyexcel文件导出 swagger easyExcel导出Excel文件打不开,文件损坏 文件下载打不开,将文件输出到本地发现可以打开,而且swagger下载的文件大小比本地文 ...

  9. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求

    这次开任务使用的是EasyExcel导出Excel文档,但是在任务过程中,生成的文档的格式要求并不符合产品和测试的期望值,如图: 想着自己地位低下,也无能力反驳.只好硬着头皮查阅资料来达到他们的想要的 ...

最新文章

  1. TMB计算的小工具-calculate_TMB.exe
  2. win10计算机屏幕暗怎么办,Win10系统调节不了屏幕亮度怎么办
  3. tone mapping简介
  4. 预测UI设计师未来发展方向
  5. jquery基本过滤选择器(jquery筛选选择器)
  6. 基因学:大数据的大希望
  7. java程序 登录界面_用java写一个登陆界面代码。
  8. 如何利用迅雷下载百度云获取实际下载地址
  9. vb.net 教程 6-14 终止线程的例子
  10. Ubuntu20.04禁用触摸屏键盘
  11. Excel多级下拉菜单的制作
  12. 在excel中如何筛选重复数据_EXCEL里如何快速统计重复的次数?
  13. innobackupex备份与恢复
  14. 4.7开发者日:北极光创投吴峰的投资只管杀不管埋
  15. SPI Flash芯片W25Q32英文版数据手册解读(二)---------存储器知识,寄存器
  16. P1293 班级聚会
  17. K8s - 让Master也能当作Node使用的方法
  18. 将电脑通达信条件预警同步到手机
  19. 权重 缩写 英文_常用英语术语缩写--采购
  20. 知乎上40个有趣回复,很精辟!

热门文章

  1. Excel 页面打开空白,解决的配置方法
  2. 网卡带宽测试软件iPerf背景与使用
  3. 【集群监控——Cacti、Nagios、Zabbix安装配置过程】
  4. Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) a
  5. 惨遭打出“玲珑塔”,EDG这操作连小学生都笑了!
  6. 二麻子,你再不更新我就……
  7. 计算机黑屏时间怎么修改,怎么设置电脑黑屏时间,赶紧试试这个方法吧
  8. Roslaunch使用GDB调试
  9. 计算机毕业设计springboot汽车销售卖车管理系统【前后端分离·新项目·代码讲解·安装调试·文档指导】
  10. 【2022/1/7】Android平台启动图制作.9.png图片