我是靠谱客的博主 拼搏金鱼,最近开发中收集的这篇文章主要介绍java poi使用SXSSFWorkbook导出50万数据到excel,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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秒,根据需要数据的不同,消耗的时间也不一样。

最后

以上就是拼搏金鱼为你收集整理的java poi使用SXSSFWorkbook导出50万数据到excel的全部内容,希望文章能够帮你解决java poi使用SXSSFWorkbook导出50万数据到excel所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部