Excel之大数据导出

前言:

excel导出其实是很常见的一个需求,之前一直都是傻傻的用apache的POI来写,用起来很复杂。最近发现网上其实还有一些前人写好的轮子,于是瞬间投入了他们的怀抱(主要是简单易用!!!)

选型:

           网上关于excel的开源框架比较流行的有两种:EasyPOI、EasyExcel。

           EasyPOI api文档:http://easypoi.mydoc.io/

           EasyExcel 文档:https://alibaba-easyexcel.github.io/

           仔细看了下api文档发现easypoi其实支持的功能比较多,编辑excel格式、校验excel模板等功能都很完善,而且都是使用注解,对于使用者而言更加方便(亲自测试过)。EasyExcel好像就是单纯的进行读取和导入,其他功能并不完善。

           但是针对大数据导出的话easypoi要调用单独的方法,easyexcel的话导出就是同一个方法。比较方便。

Bug:当前版本的easypoi的大数据导出好像有bug,和poi的版本似乎有冲突,使用不了。但是easyexcel可以,所以对于大数据的导出我使用的是easyExcel,excel模板校验和读取我还是用的easyPoi。(我也想统一用easypoi啊啊啊)

easypoi版本:

 

大数据导出:

其实api文档都有很详细的demo。我这里主要是对大数据导出中的流程做一个总结(分页查询 - 循环导入)

1、查询出此次要导出的数据量count,根据count和自定义的每次查询数量size(我是10000)来计算出一共要查询n次。(防止一次查询数据量过大导致OOM)

2、循环n次,每次查询size大小的数据。然后导出到同一个sheet的excel中。注意,每次循环完clear掉list数据,防止占用内存

3、循环中会有一个问题,就是你在循环过程中别人新插入了数据怎么办,我的做法是最开始查询count的时候根据创建时间排序,获取最新的创建时间,然后后面的循环都使用这个创建时间作为搜索条件。这样就只会查询到和count相符合的数据了。

ps:导出数据超过6w条的时候excel格式为xlsx。不然easypoi普通的导出超过6w条数据会自动换sheet,使用easyexcel就会出错。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值