为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现导出百万条数据到EXCEL中不报OOM异常?

如何实现导出百万条数据到EXCEL中不报OOM异常?

炎炎设计 2018-09-23 19:53:59
Java项目中使用POI导出百万条数据到Excel中,但是会出现内存溢出异常。存在以下问题需要考虑POI导出条数限制6w+数据量大的话会导致内存溢出现在的做法是每6w条数据做一次分割,创建一个新sheet去,但是这种做法特别慢        List<List<Object>> result = new ArrayList<List<Object>>();         List<Object> dataList = new ArrayList<Object>();        if (resultList != null) {            for (int i = 0; i < resultList.size(); i++) {                 Map<String, Object> map = getDataByClass(resultList.get(i));                 dataList.add(map);                if (dataList.size() % 60000 == 0 && dataList.size() != 0) {                     result.add(dataList);                     dataList = new ArrayList<Object>();                 }             }            if(dataList.size()!=0){                 result.add(dataList);             }         }希望大家能给点建议,想个比较好的方案解决这个难题~~
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

速度没有太好的办法,内存的话,设置Java的启动参数-Xmx加大一些内存试试。
然后我的建议是如果能接受csv的话,输出csv吧,会快很多,连poi都不需要。

查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 1099 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信