@@ -1,58 +0,0 @@ EasyExcel自定义导出 | 凤凰涅槃进阶之路

EasyExcel自定义导出

Abel sun2022年12月24日约 260 字小于 1 分钟

EasyExcel自定义导出

1. 简介

我们在使用EasyExcel 时,大部分是需要提前定义好对象的,我们根据对象中的字段决定要渲染的excel。但我们某些业务场景,需要根据数据库中查到的字段动态渲染excel, 这时候改怎么处理呢?

2. 解决方案

现实场景可以非常灵活,这里只是举例

2.1 步骤1:动态渲染请求头

private List<List<String>> head() {
    List<List<String>> list = new ArrayList<List<String>>();
    List<String> head0 = new ArrayList<String>();
    head0.add("字符串" + System.currentTimeMillis());
    List<String> head1 = new ArrayList<String>();
    head1.add("数字" + System.currentTimeMillis());
    List<String> head2 = new ArrayList<String>();
    head2.add("日期" + System.currentTimeMillis());
    list.add(head0);
    list.add(head1);
    list.add(head2);
    return list;
}

2.2 步骤2:动态渲染数据

private List<DemoData> data() {
    List<DemoData> list = new ArrayList<DemoData>();
    for (int i = 0; i < 10; i++) {
        DemoData data = new DemoData();
        data.setString("字符串" + i);
        data.setDate(new Date());
        data.setDoubleData(0.56);
        list.add(data);
    }
    return list;
}

2.3 渲染

@Test
public void dynamicHeadWrite() {
    String fileName = TestFileUtil.getPath() + "dynamicHeadWrite" + System.currentTimeMillis() + ".xlsx";
    EasyExcel.write(fileName)
        // 这里放入动态头
        .head(head()).sheet("模板")
        // 当然这里数据也可以用 List<List<String>> 去传入
        .doWrite(data());
}
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.9.1