Skip to content

聚合列&内聚导出

清沐 edited this page Nov 17, 2023 · 3 revisions

聚合列导出

3.11.0.RC及后续版本支持该特性

聚合列指的是导出Bean,大部分属性相同,仅部分属性不同,用一个Bean将同一属性不同的值以List收集作为列,示例如下:

public class School{
   
   @ExcelColumn(title = "学校名称")
   String schoolName;

   @MultiColumn(classType = String.class)
   @ExcelColumn(title = "学生姓名")
   List<String> studentNames;

}

其中,学生姓名列表就是聚合列,导出时无需按照行维度,一个Bean中仅一个学校名称,一个学生姓名,更加语义化:

public class School{
   
   @ExcelColumn(title = "学校名称")
   String schoolName;

   @ExcelColumn(title = "学生姓名")
   String studentName;

}

聚合列要求有两点:

  1. 字段类型必须是List,且元素必须是基本类型,不能是自定义类型;
  2. 使用注解 @MultiColumn

如需合并非聚合列,需调用DefaultStreamExcelBuilder autoMerge方法 image

聚合导出

聚合导出和聚合列导出的差异,在于注解 @MultiColumn所作用的对象不是List,而是自定义对象,以聚合列导出为例,可以使用该种方式导出:

public class School{
   
   @ExcelColumn(title = "学校名称")
   String schoolName;

   @MultiColumn(classType = ExtendedInfo.class)
   ExtendedInfo extendedInfo;

}

public class ExtendedInfo {

   @ExcelColumn(title = "学生总数")
   Integer count;
    
   @ExcelColumn(title = "学生姓名")
   List<String> studentNames;
    
}
Clone this wiki locally