前面几篇文章测试过用easyexcel生成动态表头,动态样式。特别是动态表头以及下面数据列表与表头字段的对应是采用注解方式实现的。但在实际工作中,有些到处是灵活生成的,也就是说对于同一个类,在不同的场景下,导出的字段,以及各自的顺序是完全不一样的。这个时候注解也就失去灵活性了。所以直接用编程方式处理数据字段对于各表头的顺序才是好的处理方式.
回顾一下前面写的类,在生成多表头时,为了保证表头与数据的对应,用到了注解 @ExcelProperty(value="名称",order = 0) 里面的order 就是表示位置,当然用index也是可以的。这种做法不够灵活,在我上面提到的场景下,完全无法满足要求,甚至位置到处错乱. 这个时候需要自定需要从列表里展示的字段,然后得到各自的值,按顺序加入到list中。这个顺序与你自定义表头的顺序一致。用反射来实现.public List> getExportListDatas(List list, List includeColumns) {
List> listData = new ArrayList<>();
if (CollectionUtils.isEmpty(list)) {
return listData;
}
try {
for (T t : list) {
List rowLine = new ArrayList<>();
for(String s : includeColumns) {
String getMethodName = "get" + s.subst