java poi使用SXSSFWorkbook导出50万数据到excel

本文介绍了一种使用javapoi的SXSSFWorkbook类来高效处理和导出大量数据到Excel的方法,通过分批查询数据库并限制内存中的行数,成功实现了57万条数据仅13秒的导出速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java poi使用SXSSFWorkbook导出50万数据到excel

其实有很多博客都有SXSSFWorkbook使用的教程,这里只是记录一下自己写的demo。

对于超大的数据在数据库中分批查询,跟分页差不多

  public Object downloadExcel(HttpServletResponse httpServletResponse) throws IOException {
        //开始时间
        long startTime = System.currentTimeMillis();
        String xlsFile = "f:/ExcelTest.xlsx";
        //获取总条数
        Long count = excelDao.getCount();
        //每100行会被保存到磁盘
        SXSSFWorkbook wb = new SXSSFWorkbook(100);
        Sheet sh = wb.createSheet(); // 建立新的sheet对象
        Row row = sh.createRow(0);   // 创建第一行对象
        //设置表头
        Cell cell0 = row.createCell(0); //创建第一个表格
        cell0.setCellValue("id"); //设置第一个表格名称
        Cell cell1 = row.createCell(1);
        cell1.setCellValue("content");
        //分批从数据库查询数据,每10000条数据为一批
        long l = count / 10000;
        List<ExcelVO> list;
        //控制表格行数
        int i1 = 1;
        for (int i = 0; i <= l; i++) {
            list = excelDao.getData(i * 10000L, 10000);
            for (ExcelVO excelVO : list) {
                Row rows = sh.createRow(i1);
                Cell cellf = rows.createCell(0);
                Cell cells = rows.createCell(1);
                cellf.setCellValue(excelVO.getId());
                cells.setCellValue(excelVO.getContent());
                i1++;
            }
        }
        FileOutputStream fOut = new FileOutputStream(xlsFile);
        wb.write(fOut);
        fOut.flush();        //刷新缓冲区
        fOut.close();
        long endTime = System.currentTimeMillis();
        long useTimes = (endTime - startTime) / 1000;
        return count + "条数据用时" + useTimes + "秒";
    }

数据使用最简单的,测试一下
在这里插入图片描述
经测试57W数据只使用了13秒,根据需要数据的不同,消耗的时间也不一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值