最近项目中用到了阿里的EasyExcel,一个简单方便读写excel的工具。
需求场景
在项目中会定义一些枚举类来保存一些状态值,在存储进数据库时保存的是code,而我们在生成excel时需要展示对应的值。
代码实现
原
需要写入excel的对象
1 |
|
枚举类
1 | public enum StatusEnum { |
转换器
1 | public class StatusEnumConvert implements Converter<String> { |
应网友反馈,使用注解和反射改进了转换器,提高复用性;
改进后
先自定义一个注解
1 | (ElementType.FIELD) |
需要转换的枚举类
不再需要getCodeByInfo()
与getInfoById()
方法
1 | public enum StatusEnum implements GetEnum { |
需要写入excel的对象
1 |
|
修改后的转换器
利用反射获取字段上注解的枚举类型,然后调用get..()
方法取值
1 | public class StatusEnumConverter implements Converter<String> { |
调用
1 | EasyExcel.write(filePath,TestExcel.class).sheet("枚举转换器").doWrite(dataList()); |