使用 Hutool 导出百万级的 Excel 数据可以分为以下几个步骤:

  1. 引入 Hutool 的 Excel 模块

在 pom.xml 中引入 hutool-all 依赖:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.10</version>
</dependency>
  1. 准备数据

假设需要导出一百万条数据,可以先随机生成一百万个 Person 对象,每个对象包含 id、name 和 age 三个属性。

public class Person {
    private Long id;
    private String name;
    private Integer age;

    // 省略 getter 和 setter 方法
}
public static List<Person> generateData(int count) {
    List<Person> list = new ArrayList<>(count);
    Random random = new Random();
    for (int i = 0; i < count; i++) {
        Person person = new Person();
        person.setId((long) i);
        person.setName('Name' + i);
        person.setAge(random.nextInt(100));
        list.add(person);
    }
    return list;
}
  1. 分批导出数据

由于一次性导出百万级的数据会导致内存溢出,需要将数据分批导出。可以将数据分成多个 Sheet,每个 Sheet 导出一部分数据。

public static void exportExcel(List<Person> dataList, String filePath, int batchSize) {
    ExcelWriter writer = ExcelUtil.getWriter(filePath);

    // 每个 Sheet 导出 batchSize 条数据
    int sheetCount = (dataList.size() + batchSize - 1) / batchSize;
    for (int i = 0; i < sheetCount; i++) {
        int fromIndex = i * batchSize;
        int toIndex = Math.min((i + 1) * batchSize, dataList.size());
        List<Person> batchList = dataList.subList(fromIndex, toIndex);

        // 导出 Sheet
        writer.setSheet(i);
        writer.write(batchList);
    }

    writer.close();
}
  1. 调用导出方法

最后调用导出方法即可将数据写入 Excel 文件中。

public static void main(String[] args) {
    List<Person> dataList = generateData(1000000);
    String filePath = "D:/data.xlsx";
    int batchSize = 10000;
    exportExcel(dataList, filePath, batchSize);
}

原文地址: https://www.cveoy.top/t/topic/nibj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录