EasyExcel 导出大文件

项目场景:

springboot + nacos + mybatis:

为了让用户根据自己的需求去抽取数据库中需要的数据,由产品经理定义 sql 模板,通过程序实现数据导出下载


问题描述

大文件导出 导致内存飙升


解决方案:

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

主要代码如下:

public static void main(String[] args) {
    
    
    String path = "F:\\importFile\\";
    String filePath = "importDataFile.xlsx";
    //创建sheet
    WriteSheet writeSheet = EasyExcel.writerSheet(filePath).build();
    //列明(动态头部)
    List<List<String>> heads = new ArrayList<>();
    List<String> h1 = new ArrayList<>();
    h1.add("a1");
    heads.add(h1);
    File file = new File(path);
    if (!file.exists()) {
    
    
        file.mkdirs();
    }
    //内容(导入到excel,一个sheet不能超过104万)
    List<List<String>> res = new ArrayList<>();
    List<String> res1 = new ArrayList<>();
    res1.add("a");
    List<String> res2 = new ArrayList<>();
    res2.add("a2");
    res.add(res1);
    res.add(res2);
    ExcelWriter excelWriter = EasyExcel.write(path + filePath).head(heads).build();
    if (!new File(path + filePath).exists()) {
    
    
        //如果文件为空,先生成一个文件
        EasyExcel.write(path).sheet(filePath).doWrite(null);
        EasyExcel.write(path).head(heads).build();
    }
    if (!StringUtil.isEmpty(res) && null != excelWriter) {
    
    
        //写入内容(这一步可以放入循环中执行,可以减少 数据存储造成的内存问题)
        excelWriter.write(res, writeSheet);
    }
    //一定记得有这一步
    excelWriter.finish();
}

也可以参考官方网站的例子:官网连接

猜你喜欢

转载自blog.csdn.net/u012129030/article/details/126312303