RuoYi-Vue v3.8.6自定义数据处理器
有时候我们希望数据展现为一个特殊的格式,或者需要对数据进行其它处理。Excel注解提供了自定义数据处理器以满足各种业务场景。
1、在实体类用Excel注解handler属性指定自定义的数据处理器
public class Device extends BaseEntity {
/**
* 设备型号
*/
@Excel(name = "设备型号", handler = MyDataHandler.class, args = {"sblx_sw_eci", "sblx_dw_hw", "sblx_dw_mkn", "sblx_dw_zx"})
private String deviceModel;
}
2、编写数据处理器MyDataHandler继承ExcelHandlerAdapter,返回值为处理后的值。
public class MyDataHandler implements ExcelHandlerAdapter {
@Override
public Object format(Object value, String[] args, Cell cell, Workbook wb)
{
// value 为返回单元格显示内容值
// args 为excel注解传递的args数组值
// cell 为单元格对象
// wb 为工作簿对象
return value;
}
}
3、编写示例,根据单元格值是否包含特定元素,来获取特定字典值
public class MyDataHandler implements ExcelHandlerAdapter {
@Override
public Object format(Object value, String[] args, Cell cell, Workbook wb) {
if (StringUtils.isNotNull(value)) {
String cellValue = value.toString();
// 省网ECI SDH、地网华为 SDH、地位马可尼 SDH、地网中兴 PTN
if (cellValue.contains("XDM")) {
return DictUtils.getDictValue(args[0], cellValue);
} else if (cellValue.contains("OSN")) {
return DictUtils.getDictValue(args[1], cellValue);
} else if (cellValue.contains("OMS") || cellValue.contains("SPO")) {
return DictUtils.getDictValue(args[2], cellValue);
} else if (cellValue.contains("ZXCTN")) {
return DictUtils.getDictValue(args[3], cellValue);
} else {
return "";
}
} else {
return "";
}
}
}