[alibaba/easyexcel]关于EasyExcel.write的使用,一个问题。

2024-04-30 507 views
7

官方例子中, EasyExcel.write(fileName, DemoData.class) .sheet("模板") .doWrite(() -> { // 分页查询数据 return data(); }); DemoData.class 可以用动态字节码技术动态生成。 但是 data() 函数该怎么写呢?编译的时候,编译器需要找到DemoData,还是可以动态添加及如何添加?感觉是不是不可行啊。

回答

8

没太明白你的意思,如果是想做成动态写入,那你可以将写入的数据指定为Map类型,然后在返回数据的时候,可以使用Map或者HashMap进行数据转换即可了

EasyExcel.write(fileName, head()) .sheet("模板") .doWrite(() -> { // 分页查询数据 return data(); });
6

你讲的方法对我来说很新颖。需要消化一下。这里有个疑惑,我这里是有几种Excel文件需要输出,列数各不一样的。你的方法可以处理吗?谢谢

4

可参考com.alibaba.easyexcel.test.demo.write.WriteTest#noModelWrite这个方法里面的实现

5

谢谢。

4

不明白你答复里的使用HashMap进行数据转换。是建立一个public class HashMapConverter implements Converter<HashMap> 还是将HashMap 转换为ArrayList?抑或其他意思

没太明白你的意思,如果是想做成动态写入,那你可以将写入的数据指定为Map类型,然后在返回数据的时候,可以使用Map或者HashMap进行数据转换即可了

EasyExcel.write(fileName, head()) .sheet("模板") .doWrite(() -> { // 分页查询数据 return data(); });
8

即不使用JavaBean的方式来做存储动态数据. 表头你可以用List<List> 支持自定义表头,数据:你可以用 List<List<Object>>来支持动态数据

1

多谢