groupname和ExcelEntity的name属性
之前一直没想好,双号表头如何处理数据,直到前几天突然想到了groupname这个属性,下面先介绍下这两个属性解决的问题,也是之前很多朋友问到的问题
这种双行的表头,之前只有在集合的模式情况下才会支持,但是很多情况都不是集合模式,也只是一列数据,
- 简单的groupname
比如这里的时间算是两个时间的聚合,单也是对象当中的元素而已,我们要导出这样的数据现在只要设置下groupname就可以了
@Excel(name = "电话号码", groupName = "联系方式", orderNum = "1")
private String clientPhone = null;
// 客户姓名
@Excel(name = "姓名")
private String clientName = null;
// 备注
@Excel(name = "备注")
private String remark = null;
// 生日
@Excel(name = "出生日期", format = "yyyy-MM-dd", width = 20, groupName = "时间", orderNum = "2")
private Date birthday = null;
// 创建人
@Excel(name = "创建时间", groupName = "时间", orderNum = "3")
private String createBy = null;
这样就会把两个groupname合并到一起展示,使用也比较简单
- ExcelEntity 一个对象在一起
假如我们需要一个对象属性统一在一起,name我们需要设置下这个对象的name属性,并且show=true 这两个是 且的关系 比如
@Excel(name = "电话号码", groupName = "联系方式", orderNum = "1")
private String clientPhone = null;
@Excel(name = "姓名")
private String clientName = null;
@ExcelEntity(name = "学生", show = true)
private GnStudentEntity studentEntity;
学生对象的内部就是普通的注解
@Excel(name = "学生姓名", height = 20, width = 30, orderNum = "2")
private String name;
@Excel(name = "学生性别", replace = {"男_1", "女_0"}, suffix = "生", orderNum = "3")
private int sex;
@Excel(name = "出生日期", format = "yyyy-MM-dd", width = 20, orderNum = "4")
private Date birthday;
@Excel(name = "进校日期", format = "yyyy-MM-dd", orderNum = "5")
private Date registrationDate;
出来的效果如下
使用起来还是很简单的,导入的话同样设置就可以获取到了
- 排序问题
导出时,表头双行显示,聚合,排序以最小的值参与总体排序再内部排序 导出排序跟定义了annotation的字段的顺序有关 可以使用a_id,b_id来确实是否使用 优先弱与 @ExcelEntity 的name和show属性
简单说就是先排外部顺序,再排内部顺序