来啦~ 使用 EasyExcel 导出时进行数据转换系列新篇章!
前情概要
之前使用 EasyExcel 进行数据导出功能的时候,类型转换处理(支付类型、男女、其他类型等)都是用的 if else 进行的判断处理,最近使用了Map 来进行处理,在这里记录一下。
代码实现
// 方式一
public class DemoTypeConverter implements Converter<String> {
public static final Map<String,String> DEMO_TYPE_MAP = ImmutableMap.<String,String>builder()
.put("类型1","01")
.put("类型2","02")
.put("类型3","03")
.put("类型4","04")
.put("类型5","05")
.put("类型6","06")
.put("类型7","07").build();
@Override
public Class supportJavaTypeKey() {
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (StringUtils.isBlank(cellData.getStringValue())){
return "";
}
return DEMO_TYPE_MAP.getOrDefault(cellData.getStringValue(),"");
}
@Override
public CellData convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return null;
}
}
// 方式二
public class DemoTypeConverter implements Converter<String> {
public static final Map<String,String> DEMO_TYPE_MAP = ImmutableMap.<String,String> of(
"类型1","01",
"类型2","02",
"类型3","03",
"类型4","04"
);
@Override
public Class supportJavaTypeKey() {
return String.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (StringUtils.isBlank(cellData.getStringValue())){
return "";
}
return DEMO_TYPE_MAP.getOrDefault(cellData.getStringValue(),"");
}
@Override
public CellData convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return null;
}
}
总结
以上代码可以看出,两种方式的区别只是 Map 的构造方式不同,其他代码逻辑都一样。如果类型较多建议采用方式一,小于等于 4 种采用方式二。