2021-10-18

本文介绍了两种Java中实现大数据量Excel导出的方法。快速导出时,建议使用07版Excel和SXSSFWorkbook,避免一次性加载大量数据,采用按需读写策略。对于非紧急情况,可以使用线程导出,结合前端进度提示,分批处理并压缩文件。
摘要由CSDN通过智能技术生成

java实现大数据量导出

实现思路

1.需要快速导出的处理方法
  • 快速导出时需要注意execl的版本,不同版本的execl可以容纳的数据量是不同的,个人建议使用07版的execl,可以容纳100w的数据,使用SXSSFWorkbook类进行execl的操作。另外导出时不建议使用list进行多次的传递,使用查多少写入多少的方式。这里只贴核心代码,剩下的整理完后进行补充。
try (SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);) {
            StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
            Cursor<Student> cursor = studentMapper.selectAllUse();
            Iterator<Student> iterator = cursor.iterator();
            Row row;
            //2为预留的两行字段 -行数记录器
            int rowNum = 2;
            while (iterator.hasNext()) {
                Student student = iterator.next();
                rowNum++;
                //下标问题怎么处理。
                row = sheet.createRow(rowNum);
                row.createCell(0).setCellValue(student.getId());
                row.createCell(1).setCellValue(student.getAge());
                row.createCell(2).setCellValue(student.getName());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
2.对于不需要快速导出的方法
  • 这种实现起来最简单,导出时使用线程进行导出,前端使用loding或进度条进行拖延时间,后端等待线程执行完返回线程id,根据id进行返回值的下载,将导出和下载分开,另外在导出时根据数据量进行分execl,导出完进行记得压缩。方法简单,不进行实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值