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 "";
        }
    }
}