easyexcel简化使用封装,提供注解导出,字典值映射,合并单元格 您所在的位置:网站首页 映射功能 easyexcel简化使用封装,提供注解导出,字典值映射,合并单元格

easyexcel简化使用封装,提供注解导出,字典值映射,合并单元格

#easyexcel简化使用封装,提供注解导出,字典值映射,合并单元格| 来源: 网络整理| 查看: 265

文章目录 前言easyexcel-plus使用1、简单导出1.1 模板对象1.2 controller1.3 导出效果 2、带有字典映射的导出2.1 创建字典enum并实现ExcelEnum2.2 模板对象2.3 controller2.4 导出效果 3、合并单元格导出3.1 模板对象3.2 controller3.3 导出效果 **其它注意事项**

前言

这个只是个项目使用文档,代码请访问代码仓库 github仓库easyexcel-plus gitee仓库easyexcel-plus

easyexcel-plus使用

说明

本项目为easyexcel的扩展项目,简化easyexcel导出的使用,增加了扩展一些功能,做到根据注解导出excelexcel样式目前设置了、水平、垂直居中,自动换行,自适应列宽(但有些不是很精确),如列宽、行高达不到想要的效果可以参考easyexcel的样式注解添加到实体类上提供字典值映射的注解(导出根据enum实现字典的映射导出)提供合并单元格的导出持续更新中 1、简单导出 1.1 模板对象

​ 建议在类上都标注@ExcelIgnoreUnannotated注解,作用为忽略没有标注ExcelProperty的字段,如果所有字段都要导出,可以不标注

@ExcelIgnoreUnannotated // 忽略没有标注@ExcelProperty的字段导出 public class FamilyMemberDTO { @ExcelProperty("户主") private String hzmc; @ExcelProperty("成员姓名") private String cyxm; @ExcelProperty("证件号码") private String cyzjhm; @ExcelProperty("家庭关系") private String yhzgx; @ExcelProperty("电话") private String lxdh; @ExcelProperty("时间") private LocalDateTime time; @ExcelProperty("时间2") private Date date; } 1.2 controller

​ 方法标注**@ResponseExcel**注解,

​ name:文件名 必填

​ sheetName:sheet名称 必填

​ suffix:文件后缀 非必填,默认XLSX

​ 方法正常返回List就可以

​ 注意返回值必须是List,并且list的元素不能时list

@GetMapping("/export") @ResponseExcel(name = "测试",sheetName = "测试sheet") public List exportTest(){ List dtoList = getData(); return dtoList; } 1.3 导出效果

简单导出

2、带有字典映射的导出 2.1 创建字典enum并实现ExcelEnum

​ 实现ExcelEnum接口提供泛型,泛型为实体类字段的类型,一般为Integer或者String,并实现 getByCode方法 提供根据 字典值返回字典描述

@AllArgsConstructor @Getter public enum SexEunm implements ExcelEnum { /** * 男 */ MAN(1,"男"), /** * 女 */ WOMAN(2,"女"); Integer code; String desc; @Override public String getByCode(Integer code) { for (SexEunm value : SexEunm.values()) { if (value.getCode().equals(code)){ return value.getDesc(); } } return code.toString(); } } 2.2 模板对象

​ 在需要字典映射的字段@ExcelProperty注解添加 converter = ExcelEnumValueConverter.class 属性

​ 并标注 @ExcelEnumValue(SexEunm.class)注解 value值为enum的class对象

@Data @ExcelIgnoreUnannotated public class FamilyMemberDTO{ @ExcelProperty("户主") private String hzmc; @ExcelProperty("成员姓名") private String cyxm; @ExcelProperty(value = "成员性别", converter = ExcelEnumValueConverter.class) @ExcelEnumValue(SexEunm.class) private Integer cyxb; ...... } 2.3 controller @GetMapping("/export") @ResponseExcel(name = "测试",sheetName = "测试sheet") public List exportTest(){ List dtoList = getData(); return dtoList; } 2.4 导出效果

字典映射导出

3、合并单元格导出

​ 合并列导出功能目前是根据对象中 指定列分组,在ResponseExcel注解里指定要合并哪些列

3.1 模板对象

​ ExcelProperty注解value值为一个数组,可以提供多个列名,默认自动合并head相近同名列

​ 在分组字段上标注ExcelMergeColumn注解,会根据这个字段分组

@Data @ExcelIgnoreUnannotated public class FamilyMemberMergeDTO { @ExcelProperty(value = {"自定义合并", "户主", "户主"}) @ExcelMergeColumn private String hzmc; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "成员姓名"}) private String cyxm; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "成员性别"}, converter = ExcelEnumValueConverter.class) @ExcelEnumValue(SexEunm.class) private Integer cyxb; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "证件号码"}) private String cyzjhm; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "家庭关系"}) private String yhzgx; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "电话"}) private String lxdh; @ExcelProperty(value = {"自定义合并", "家庭成员情况", "时间"}) private LocalDateTime time; } 3.2 controller

ResponseExcel注解

​ isMerge属性设为true

​ mergeColumn属性指定要合并的列

​ headNumber sheet头的行数 可以不传,不传则取ExcelProperty注解value长度

@GetMapping("/export/merge") @ResponseExcel(name = "测试", sheetName = "测试sheet",isMerge = true,mergeColumn = {0},headNumber = 3) public List exportMergeTest() { List dtoList = getMergeData(); return dtoList; } 3.3 导出效果

合并单元格导出

其它注意事项 如果导出报错,请查看poi依赖版本是否冲突,并解决


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有