EasyExcel如何对应业务字典
时间: 2023-09-07 11:11:33 浏览: 82
ConvertCustomDictionaries:转换自定义字典
5星 · 资源好评率100%
在EasyExcel中对应业务字典可以通过自定义转换器实现。业务字典指的是用于描述某些业务规则或者状态的字典表,在Excel中可能以数字或者代码的形式呈现,需要进行转换才能更好地呈现出来。
首先,需要自定义一个转换器类,实现com.alibaba.excel.converters.Converter接口,并在类上使用@Converter注解进行标记。例如:
```
@Converter
public class StatusConverter implements Converter<String> {
private static final Map<String, String> statusMap = new HashMap<>();
static {
statusMap.put("0", "未审核");
statusMap.put("1", "已审核");
statusMap.put("2", "已驳回");
}
@Override
public Class supportJavaTypeKey() {
return String.class;
}
@Override
public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new CellData(statusMap.get(s));
}
@Override
public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
for (Map.Entry<String, String> entry : statusMap.entrySet()) {
if (entry.getValue().equals(cellData.getStringValue())) {
return entry.getKey();
}
}
return null;
}
}
```
在上述代码中,我们自定义了一个StatusConverter转换器,将数字形式的状态值转换为对应的文本值,并且在转换回来时也可以将文本值转换为数字形式的状态值。需要注意的是,在convertToJavaData()方法中需要根据文本值查找对应的状态码。
接着,在需要进行业务字典转换的字段上,使用@ExcelProperty注解进行标记,并指定converter属性为我们自定义的转换器类。例如:
```
@ExcelProperty(value = "状态", index = 3, converter = StatusConverter.class)
private String status;
```
在上述代码中,我们将Excel文件中的第4列(index = 3)与Java对象中的status字段进行了映射,并且指定了converter属性为我们自定义的转换器类StatusConverter。
这样,在读取Excel文件时,EasyExcel会自动将数字形式的状态值转换为对应的文本值;在写入Excel文件时,EasyExcel会自动将Java对象中的文本形式的状态值转换为对应的数字形式的状态值。
阅读全文