使用EasyExcel写入文件时,可以通过定义一个Java Bean类来实现动态表头,具体步骤如下:

  1. 定义Java Bean类,包含需要写入Excel的数据和表头信息,例如:
@Data
public class ExcelData {
    // 表头信息,使用@ExcelProperty注解标识表头名称和顺序
    @ExcelProperty(index = 0, value = "姓名")
    private String name;
    @ExcelProperty(index = 1, value = "年龄")
    private Integer age;

    // 数据信息
    private List<Map<String, Object>> dataList;
}
  1. 使用EasyExcel的ExcelWriterBuilder创建ExcelWriter对象,并指定输出的文件路径和Sheet名称。
ExcelWriterBuilder writerBuilder = EasyExcel.write(outputFilePath).sheet(sheetName);
ExcelWriter writer = writerBuilder.build();
  1. 使用ExcelWriterwrite方法写入表头信息和数据信息,表头信息从Java Bean类中获取,数据信息通过动态表头的方式传入。
// 写入表头信息
List<List<String>> headList = new ArrayList<>();
headList.add(excelData.getHeadList());
writer.writeHead(headList);

// 写入数据信息
List<Map<String, Object>> dataList = excelData.getDataList();
for (Map<String, Object> data : dataList) {
    // 将Map转换为List
    List<Object> rowData = new ArrayList<>();
    for (String key : data.keySet()) {
        rowData.add(data.get(key));
    }
    writer.writeRow(rowData);
}

完整的代码如下:

@Data
public class ExcelData {
    // 表头信息,使用@ExcelProperty注解标识表头名称和顺序
    @ExcelProperty(index = 0, value = "姓名")
    private String name;
    @ExcelProperty(index = 1, value = "年龄")
    private Integer age;

    // 数据信息
    private List<Map<String, Object>> dataList;

    // 动态获取表头信息
    public List<String> getHeadList() {
        List<String> headList = new ArrayList<>();
        headList.add(name);
        headList.add(age.toString());
        for (String key : dataList.get(0).keySet()) {
            headList.add(key);
        }
        return headList;
    }
}

public void writeExcel(String outputFilePath, String sheetName, ExcelData excelData) {
    ExcelWriterBuilder writerBuilder = EasyExcel.write(outputFilePath).sheet(sheetName);
    ExcelWriter writer = writerBuilder.build();

    // 写入表头信息
    List<List<String>> headList = new ArrayList<>();
    headList.add(excelData.getHeadList());
    writer.writeHead(headList);

    // 写入数据信息
    List<Map<String, Object>> dataList = excelData.getDataList();
    for (Map<String, Object> data : dataList) {
        // 将Map转换为List
        List<Object> rowData = new ArrayList<>();
        for (String key : data.keySet()) {
            rowData.add(data.get(key));
        }
        writer.writeRow(rowData);
    }

    writer.finish();
}
``

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

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