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;
        }
    }
相关推荐
哆啦A梦158820 小时前
商城后台管理系统 03 Vue项目-实现表格导出EXCEL表格
前端·vue.js·excel
xingzhemengyou121 小时前
python pandas操作excel
python·excel·pandas
小小心LOVE21 小时前
Vue3 安装和使用 vue-office来实现 Word、Excel 和 PDF 文件的预览
vue.js·word·excel
cyhysr21 小时前
oracle的model子句让sql像excel一样灵活2
sql·oracle·excel
oh,huoyuyan1 天前
【界面案例】火语言RPA读取Excel文件,循环写入界面表格
excel·rpa
2501_907136822 天前
Excel数据根据标题行自动匹配合并到指定模板文件
excel·软件需求
分***82 天前
批量识别身份证并导出excel工具分享,身份证识别工具离线识别 + 字段精准优化,Win10/11 直接用
excel·身份证识别
runepic2 天前
Python 批量合并多个 Excel 数据(自动补 0 + 生成明细)
java·python·excel
hellotutu2 天前
Java 读取 Excel 文件
java·开发语言·excel
yivifu2 天前
Excel中Lookup函数实现临界点归入下一个等级的方法
java·前端·excel