easyexcel导出字典值的映射转换


主要是通过指定converter来实现

 

 具体converter代码如下

/**
 * easyexcel关于导出的字典值转换
 */
public class ExcelDictConverter implements Converter<Integer> {

    private String[] dictCodIsYesNoArr ={"afterSalesStatus", ""};


    @Override
    public Class supportJavaTypeKey() {
        return Integer.class;
    }

    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    @Override
    public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        return null;
    }

    @Override
    public CellData convertToExcelData(Integer dictKey, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        // 类里需要转换的字段
        Field field = excelContentProperty.getField();
        String fieldName = field.getName();
        String excelValue;
        // 字典值为yes_no的字段
        if (StringUtils.equalsAnyIgnoreCase(fieldName, dictCodIsYesNoArr)) {
            excelValue = DictCache.getValue(DictEnum.YES_NO, dictKey);
        }else {
            // 将字段名转换成下划线连接(也就是字典表里的code
            String dictCode = camelToUnderline(fieldName);
            // 当前字段对应的字典值
            excelValue = DictCache.getValue(dictCode, dictKey);
        }
        return new CellData(StringUtil.isBlank(excelValue) ? dictKey.toString() : excelValue);
    }

    /**
     *         驼峰转成下划线
     *
     * @param sourStr 需要转换的字符串,如:orderStatus
     * @return 转换后的字符串,如:order_status
     */
    public String camelToUnderline(String sourStr) {
        if (sourStr == null || "".equals(sourStr.trim())) {
            return "";
        }
        int len = sourStr.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = sourStr.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append('_');
            }
            sb.append(Character.toLowerCase(c));
        }
        return sb.toString();
    }

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM