alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.1k stars 7.49k forks source link

多数据分组按sheet0模板动态展示 #3520

Open byronv5 opened 11 months ago

byronv5 commented 11 months ago

多数据分组场景,初始模板在sheet0,根据分组数据动态扩展sheet,每个组一个sheet,都套用sheet0的模板。 现在的实现思路是,自己根据分组复制sheet0之后再单独填充,框架能否支持或者支持了我没发现?

举例:A组:{name:xxx,age:18};B组:{name:yyy,age:88} excel生成两个sheet名分别是:A组和B组,数据分别填充到对应sheet

ljluestc commented 4 months ago

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;

import java.util.ArrayList;
import java.util.List;

public class WriteMultipleSheets {

    public static void main(String[] args) {
        String fileName = "output.xlsx";

        // 准备数据
        List<Person> groupA = new ArrayList<>();
        groupA.add(new Person("John", 30));
        List<Person> groupB = new ArrayList<>();
        groupB.add(new Person("Alice", 25));

        // 写入 Excel 文件
        try (ExcelWriter excelWriter = EasyExcel.write(fileName).build()) {
            WriteSheet sheetA = EasyExcel.writerSheet(0, "A组").head(Person.class).build();
            excelWriter.write(groupA, sheetA);

            WriteSheet sheetB = EasyExcel.writerSheet(1, "B组").head(Person.class).build();
            excelWriter.write(groupB, sheetB);
        }
    }

    // POJO 类
    public static class Person {
        private String name;
        private int age;

        // 构造函数、getter 和 setter 方法
    }
}