主要对easyExcel做了易用性的封装,需要导出的话,就继承这个类。

@Log4j2
public class EasyExcelBaseController<T> {/*** 导出时候 获取某一页的数据.*/protected List<T> getExportPageData(Object condtion, int current ,int  size){return null;}/*** 导出excel*/public void exportExcel(Object condtion,HttpServletResponse response,Class<T> realT, String fileName_en,String fileName_zh,List<String> excludeColumnList){long startTime = System.currentTimeMillis();log.info("export {} file start ",fileName_en);ExcelWriter excelWriter = null;try {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode(fileName_zh, "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");excelWriter = EasyExcel.write(response.getOutputStream(), realT).excludeColumnFiledNames(excludeColumnList).build();WriteSheet writeSheet = EasyExcel.writerSheet(1).build();int current = 1;List<T>  exportDatas = null;while (true){//分页查询exportDatas = getExportPageData(condtion,current,TmsSystemConfig.BATCH_EXPORT_NUM);//根据数据导出excelif(exportDatas.size() > 0){excelWriter.write(exportDatas, writeSheet);}if( exportDatas.size() < TmsSystemConfig.BATCH_EXPORT_NUM){break;}//还有数据 继续查询current++;}} catch (Exception e) {log.error("export excel {} error error list:{}",fileName_en);log.error("export excel error error list:{}",e);}finally {//一定要关掉if(excelWriter != null){excelWriter.finish();}}long endTime = System.currentTimeMillis();log.info("export {} file end , total use time :{} ",fileName_en,endTime-startTime);}}

现在,我们就可以继承这个EasyExcelBaseController类,然后实现导出了,如下

public class UserExcelController extends EasyExcelBaseController<UserVO> {private UserFeignApi userFeignApi;/*** 导出用户列表excel*/@GetMapping("/export")@ApiOperation(value = "导出excel", notes = "导excel")public void exportExcel(UserExportDTO dto, HttpServletResponse response) {super.exportExcel(dto, response, UserVO.class,"userList","用户导出列表",null);}/*** 查询导出的分页数据的某一页数据*/@Overridepublic List<UserVO> getExportPageData(Object condtion, int current, int size){UserExportDTO dto = (UserExportDTO ) condtion;List<UserVO> list = new ArrayList<>();R<Page<UserVO>> ret = userFeignApi.selectPage(dto,current,size);if(ret != null && ret.getData() != null){if(ret.getData().getTotal() > TmsSystemConfig.BATCH_EXPORT_MAX_NUM){throw new ServiceException("导出数据过多,超过最大值,请优化查询条件,缩小数据范围!");}list = ret.getData().getRecords();}return list;}
}

这样就实现了,一个很好用的easyExcel批量分页导出的工具类。

easy excel 实现分页批量导出相关推荐

  1. Excel表格怎么批量导出图片将文件中的图片导出到文件夹中

    这几天一直没写博文,但是为了让大山的孩子,能够像京城的富二代一样,可以开开心心公公平平地享受学习excel的权利,因此决定今天继续写,今天主要来谈谈excel图片批量导出,关于excel表格怎么批量导 ...

  2. java excel导出2007_java操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  3. php批量导出excel表格,PHP批量导出数据为excel表格

    之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...

  4. 如何用java使用POI读取excel文件,创建excel文件,实现批量导出和导入

    例子1: 1 //读取excel 2 String path = "F:\\\\yujun\\\\javaweb\\\\第二章\\\\stu.xlsx"; 3 //工作表 4 Wo ...

  5. Python自动化办公:将Excel表格内容批量导出为PDF文件

    Python自动处理Excel表格数据 序言 代码实现 序言 上一篇咱们实现了多个表格数据合并到一个表格,本次咱们来学习如何将表格数据分开导出为PDF文件. 部分数据 然后需要安装一下这个软件 wkh ...

  6. php 批量导出excel文件,PHPEXCEL批量导出

    // 引入phpexcel核心类文件 require_once ROOT_PATH . '/includes/phpexcel/Classes/PHPExcel.php'; // 实例化excel类 ...

  7. Python+Excel+VBA实现批量自助生成名牌

    文章目录 需求 在Excel制作名牌 批量导出图片 1. 全VBA 2. VBA+压缩包 3. Python+Excel 打包 需求 这次是hrbp小姐姐需要找我批量生成他们新部门的员工名牌.如果让设 ...

  8. mybatis + easy excel 导出百万级数据仅需要1g内存

    思路 mybatis 流处理 (实际就是 jdbc 层面的游标,避免分页查询(只需要查询一次数据库)) + easy excel多次写. import org.apache.ibatis.sessio ...

  9. java操作Excel之POI(4)利用POI实现数据的批量导出

    后台导出方法: 1 /** 2 * 后台导出方法 3 * 利用POI实现数据的批量导出 4 */ 5 public String export() throws Exception{ 6 Connec ...

最新文章

  1. fiddler 抓取winform wcf包
  2. windows中卸载Jenkins
  3. 信息保护:从经典纠错到量子面膜
  4. Java 调用 Kotlin
  5. tag+标签+php,ZBLOG PHP代码实现侧栏彩色标签TAG关键字样式方法
  6. 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
  7. 算法题复习(快排、链表、二分、哈希、双指针)
  8. java abstractrequest,Java AbstractJackson2HttpMessageConverter類代碼示例
  9. repeated_Ruby中带有示例的Array.repeated_combination()方法
  10. docker cp :用于容器与主机之间的数据拷贝
  11. OpenGl文章 Android OpenGL ES 简明开发教程
  12. java 如何将异常_java中的异常处理
  13. matlab车牌识别源代码资源,车牌识别系统MATLAB源代码完整
  14. WareZ入门指南--TLF元老thunderlight
  15. 中安证件识别系统介绍
  16. 武书连2022中国大学综合实力排行榜发布!
  17. Opencv4.2 DNN模块 终于支持Nividia GPU了!
  18. 数据仓库历史数据存储 - 拉链表
  19. 中外消防传感器差距浅析
  20. Science Advances:社会和健康科学中用于描述、预测和因果推理的机器学习方法

热门文章

  1. 基于Python Flask框架的共享自习室预约系统的设计与实现-计算机毕业设计源码+LW文档
  2. 如何从 GAC 卸载程序集
  3. 志愿服务树时代新风 雷锋精神放璀璨光芒
  4. Kali --VNC连接
  5. 82 Three.js 使用第一视角控制器FirstPersonControls控制相机
  6. 5G只是小儿科?任正非对话人工智能专家2万字实录
  7. qgis 空间连接_QGIS空间连接简介
  8. C语言strlen函数详细讲解
  9. 魔方财务主题-Lolipa-魔方主机模板
  10. 《乌合之众》--Agree with something