EasyPoi如何导出数据量较大的Excel

  • 1.导入依赖
  • 2.实体类加@Excel注解
  • 3.业务层实现IExcelExportServer 接口
  • 4.实际导出方法

相信大家一定在工作工程中经历过数据量大,普通的导出已经满足不了实际需求,那么这里我给大家分享一个稍微有点用的,使用easyPoi导出数据比较大的方法

本方法是同步接口,如果导出数据量大于1048576行的,可以出门左转了,因为下列方法并不能解决这个问题,只能后台走异步导出

~~ 就不多BB了,直接开始~~
我项目用的gradle+jpa,所以以下就用该环境举例。

1.导入依赖

poi版本
 compile("cn.afterturn:easypoi-base:4.2.0")compile("cn.afterturn:easypoi-web:4.2.0")compile("cn.afterturn:easypoi-annotation:4.2.0")

2.实体类加@Excel注解

     @ApiModelProperty("审批通过时间")@Excel(name = "审批通过时间", width = 16)private Date ApprovalsDate;@ApiModelProperty("是否删除")@Excel(name = "是否删除", width = 16 ,replace = {"是_true", "否_false"})private boolean isDelete;@ApiModelProperty("产品孔数")@Excel(name = "产品孔数", width = 16, type = 10)private BigDecimal wallThickness;

(注:这里我举了三个例子,小白看过来,replace可以将 _ 后面的值替换成前面的值,然后type=10是将该值导出为数字类型)

3.业务层实现IExcelExportServer 接口

这里需要重写selectListForExcelExport方法,如果是mybatis同理。

@Service
public class AdsPchAmtSumMxExclDetMqService implements IExcelExportServer {@Autowiredprivate AdsPchAmtSumMxExclDetMqDao dao;@Overridepublic List<Object> selectListForExcelExport(Object queryParams, int page) {Search search = (Search) queryParams;PageInfo pageInfo = new PageInfo();pageInfo.setPage(page);pageInfo.setRows(10000);search.setPageInfo(pageInfo);LogUtil.bizLog("当前是第"+page+"页,已取"+pageInfo.getRows()*(page-1)+"条数据");List materialResponses = dao.findByPage(search).getRows();return materialResponses;}
}

4.实际导出方法

ExcelType选择XSSF,对应excel 07的 .xlsx版本。
exportBigExcel方法这里推荐使用

public static Workbook exportBigExcel(ExportParams entity, Class<?> pojoClass,IExcelExportServer server, Object queryParams) {ExcelBatchExportService batchServer = new ExcelBatchExportService();batchServer.init(entity, pojoClass);return batchServer.exportBigExcel(server, queryParams);}

上面的这一个方法,需要传入
1.导出参数
2.导出实体的class对象
3.刚才继承IExcelExportServer 接口的业务层
4.筛选条件(这里的筛选条件就是上面重写方法里面需要用的参数)

 @Overridepublic void exportDataDetail(Search search,HttpServletRequest request,HttpServletResponse response){String exportName ="大数据Excel导出";ExportParams exportParams = new ExportParams(exportName,exportName, ExcelType.XSSF);Workbook workbook = ExcelExportUtil.exportBigExcel(exportParams, AdsPchAmtSumMxExclDetMq.class, adsPchAmtSumMxExclDetMqService,search);ExcelUtils.outputFile(request, response, workbook, exportName + ".xlsx");}

PS:到这里我就觉得差不多了,大家如果有什么疑问可以在下面交流哦,我哪里写的不对的地方也可以提出来共同进步!

夏波!夏波!

2022-08-11 EasyPoi如何导出数据量较大的Excel相关推荐

  1. php输出数据过大,PHPExcel导出数据量过大处理

    转:ASP.NET MVC3 Model验证总结 http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP ...

  2. PHP导出Excel时数据量过大的问题

    1.设置脚本运行时间 set_time_limit(0) 2.运行内存设置 当数据量比较大时就需要设置memory_limit,来防止内存报错,但是这终究不是解决办法,因为系统的内存是有限的,比如你设 ...

  3. Matlab曲线图导出eps数据量太大占用很多存储空间

    Matlab曲线图导出eps数据量太大占用很多存储空间 我的Figure是从simulink里的scope里导出的,因为是采样率很高的时域波形,所以数据量很大.从Figure里导出eps向量格式的话, ...

  4. 最新全国大学学术排名!2022年11月ESI最新数据,中国内地高校综合排名前200名...

    转载于 青塔 ESI数据库更新了2022年11月最新ESI数据.据统计,全球共有8191家科研机构上榜,其中有392所中国内地高校. 本期青塔Pro整理了2022年11月ESI最新数据中国内地高校综合 ...

  5. 数据量过大时数据库操作的处理

    一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量.那么,如何实现快速地从这些 超大容量的数据库中提取数据(查询).分析.统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理 ...

  6. MyBatis中使用流式查询避免数据量过大导致OOM

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...

  7. bootstrap 树形表格渲染慢_bootstrap-table-treegrid数据量较大时渲染太久了

    bootstrap-table-treegrid数据量较大时渲染太久了 森姐姐 2019-10-23 16:48:51 2260 收藏 2 分类专栏: 遇到的问题 最后发布:2019-10-23 16 ...

  8. lwip连续发数据卡死_LwIP用TCP连接方式在数据量比较大协议栈卡死

    这段时间用STM32移植LwIP做语音传输.但是遇到一个问题困扰许久,在使用TCP方式做一个client去连接server,由于数据量比较大经常在连接一个多小时候就出现断线而 也ping不通.接下来我 ...

  9. 记kafka partition数据量过大导致不能正确重启

    某台kafka服务器负载过高,机器挂掉一段是时间后,kill掉占用内存的进程,然后重启kafka服务,但是一直不能完成启动和数据同步,日志如下 fset 0 to broker BrokerEndPo ...

最新文章

  1. ASP.NET强大的性能
  2. Tomcat应用部署:打war包、在Tomcat中注册用户角色、创建虚拟目录和域名
  3. linux jsp mysql数据库,Linux JSP连接MySQL数据库.pdf
  4. MySql隔离级别多线程并发读取数据时的正确性
  5. OpenGL创建一个GLFW背景红色窗口的实例
  6. 提升 .NET 程序性能的 一些 原则
  7. Spring Boot @Conditional 注解
  8. Cortex M3 NVIC与中断控制
  9. 【springBoot】注解的详解
  10. Linux线程的同步,linux线程同步
  11. 下次偶转贴贴子时得加上转贴才行~~~
  12. [C/C++] gdb 调试
  13. 010 异步处理Rest服务
  14. 解决打开VMware虚拟机时Take Ownership出错的问题
  15. solid works定义样条曲线
  16. 了解原型设计工具:墨刀
  17. “天下文章一大抄”的时代已经过去
  18. Appendix B Review of Memory Hierarchy
  19. 打破应试教育,犯错亦是成长
  20. Linux 系统结构详解——新手上路

热门文章

  1. php实现TXT小说章节解析、小说章节在线阅读
  2. wps演示中在任务栏中显示所有窗口怎么设置
  3. The Forty-Year Programmer
  4. 计算机毕业设计Java高校会议室预约系统(源码+系统+mysql数据库+lw文档)
  5. 再买手机前能不能买一条像样的内裤
  6. 副业怎么赚到钱?有哪些能赚钱的副业?
  7. python实现6的阶乘_python设计一个阶乘函数,并使用该函数求出6的阶乘。(怎么用python求阶乘的和教程)...
  8. 计算机考证证书怎么打印
  9. SpringMVC总结和初识JSON
  10. H5页面中调用微信和支付宝支付