Java 实现excel大批量导出

实现excel大数据量导出

导出Excel时,如果数据量较大,全部查询出来list,然后写入Workboook,会出现内存异常异常,建议使用SXSSFWorkbook,然后设置setCompressTempFiles属性为true

复制代码
@Test
    public void testBigExcel(){
        try {
            long startTime = System.currentTimeMillis();
            final int NUM_OF_ROWS = 1300000;
            final int NUM_OF_COLUMNS = 21;

            SXSSFWorkbook wb = null;
            try {
                wb = new SXSSFWorkbook();
                //压缩临时文件,很重要,否则磁盘很快就会被写满
                wb.setCompressTempFiles(true);
                Sheet sh =null;
                int sheetNum=1;
                int rowNum = 0;
                for (int num = 0; num < NUM_OF_ROWS; num++) {
                    if (num % 1000000 == 0) {
                        sh = wb.createSheet("Sheet " + sheetNum);
                        rowNum = 0;
                        sheetNum++;
                    }else{
                        rowNum++;
                    }

                    org.apache.poi.ss.usermodel.Row row = sh.createRow(rowNum);
                    for (int cellNum = 0; cellNum < NUM_OF_COLUMNS; cellNum++) {
                        Cell cell = row.createCell(cellNum);
                        cell.setCellValue(Math.random());
                    }
                }

                FileOutputStream out = new FileOutputStream("d:/Maruko.xlsx");
                wb.write(out);
                out.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (wb != null) {
                    wb.dispose();// 删除临时文件,很重要,否则磁盘可能会被写满
                }
            }

            long endTime = System.currentTimeMillis();
            System.out.println("花费时间为:" + (endTime - startTime));
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        }
    }
相关推荐
程序员晚枫5 小时前
Python处理Excel的5个“神仙库”,办公效率直接翻倍!
python·excel
_处女座程序员的日常6 小时前
如何预览常见格式word、excel、ppt、图片等格式的文档
前端·javascript·word·excel·开源软件
best_scenery6 小时前
excel T检测时[检验类型]参数设置的方法
excel
路漫漫其修远.6 小时前
解决excel复制页面行高无法复制的问题
excel
办公解码器7 小时前
超链接查看太麻烦,Excel怎么快速提取单元格内的超链接地址?
excel
ZhangBlossom7 小时前
【Java】EasyExcel实现导入导出数据库中的数据为Excel
java·数据库·excel
S7777777S8 小时前
easyExcel单元格动态合并示例
java·excel
SunkingYang11 小时前
Excel斜线表头怎么做?合并单元格后添加对角线+两侧输入文字,新手也能秒会!
excel·office·单元格·斜线表头·对角线·输入文字·两边
用户298698530141 天前
C#: 高效移动与删除Excel工作表
后端·.net·excel
缺点内向2 天前
Java: 如何在Excel中添加或删除分页符?
java·excel