easyexcel导出多重嵌套list excel模板
时间: 2023-12-13 15:33:05 浏览: 460
为了使用EasyExcel导出多重嵌套List的Excel模板,我们可以按照以下步骤进行操作:
1.首先,我们需要创建一个Excel模板,其中包含多个sheet页,每个sheet页对应一个指定的对象。在每个sheet页中,我们需要定义表头,以及需要导出的字段对应的列。
2.接下来,我们需要编写一个通用的工具类,将List<?>这种结构转化为List<List < String >>的形式。可以参考以下代码:
```java
public class ExcelUtils {
/**
* 将List<?>转化为List<List<String>>的形式
*
* @param list 需要转化的集合
* @param fields 对应的字段属性名,这里的顺序对应输出到excel表格中的顺序
* @param classType 对应的类型
* @return List<List < String>>的形式
*/
public static List<List<String>> convertList(List<?> list, String[] fields, Class<?> classType) {
List<List<String>> dataList = new ArrayList<>();
for (Object obj : list) {
List<String> rowList = new ArrayList<>();
for (String field : fields) {
try {
Field f = classType.getDeclaredField(field);
f.setAccessible(true);
Object value = f.get(obj);
rowList.add(value == null ? "" : value.toString());
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
dataList.add(rowList);
}
return dataList;
}
}
```
3.在导出Excel时,我们可以按照以下步骤进行操作:
```java
// 创建ExcelWriter对象
ExcelWriter writer = EasyExcel.write(fileName).build();
// 遍历每个sheet页,将数据写入Excel中
for (int i = 0; i < sheetList.size(); i++) {
// 获取当前sheet页的数据
List<?> dataList = sheetList.get(i).getDataList();
// 获取当前sheet页对应的对象类型
Class<?> classType = sheetList.get(i).getClassType();
// 获取当前sheet页对应的字段属性名
String[] fields = sheetList.get(i).getFields();
// 将List<?>转化为List<List<String>>的形式
List<List<String>> data = ExcelUtils.convertList(dataList, fields, classType);
// 写入当前sheet页的数据
writer.write(data, i, 0);
}
// 关闭ExcelWriter对象
writer.finish();
```
阅读全文