百万级数据以Excel形式导出

 (1).主要考虑到两个方面,第一个方面是内存溢出问题,所以选用阿里的EasyExcel因为它对POI进行了封装功能强大;第二个方面是由于excel版本导致Sheet存储容量不一样,cexcel2003(.xls)每个Sheet只能存6万多条数据而cexcel2007(xlsx)能存100多万条数据;

(2).主要实现逻辑是先利用总条数计算出装这么多数据需要多少个Sheet,每个Sheet要进行几次分批插入才插满,然后使用两层for循环,外层for循环用来遍历创建Sheet个数,内存循环用于分页分批查询数据到集合中,每次查询20万左右写到同一个Sheet中,直到写满100万条为止才进行下一伦外循环,最后一个Sheet写完毕后放行下载;

(3).查询前要调用集合的clear()方法清空之前的数据触发GC实现垃圾回收;前端发起请求时需要将http的响应时间默认的1s撤销请求设置长一点,避免超时连接丢失;

  • 怎么知道当前Sheet写满了呢?详见下图,内层循环完毕表示当前sheet写满了;
  • 怎么知道是最后一页?见下图,外层循环完毕就表示最后一页写完了;
  • 因为根据数据总条数、每个sheet计划放多少条、每次往里放多少条数据来计算出用多少个sheet才能装下,每个sheet要循环多少次才能装满,如果最后一页数据写不完则加1次内层遍历次数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不努力谁会可怜你?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值