首页 > 其他分享 >easypoi导入导出字段字典码值自动转换

easypoi导入导出字段字典码值自动转换

时间:2023-08-26 09:44:19浏览次数:34  
标签:return String 替换 导入 dict biMap easypoi 码值 字典

1.replace进行内容替换

@Excel(name = "是否有效", width = 30, replace = {"是_1","否_0","_null"})
private String  isEffective;

Excel文件内'是否有效'这列的数据将会根据replace规则替换,例如 '是'会被替换为'1',空白会被替换为null。
反过来导出数据到Excel时,会反过来将'1'替换为'是',null替换为空白

replace方式的替换是写死的,并且以下划线_作为分割存在替换问题。例如"四川_成都_01"这种类型的替换不能做到将"四川_成都"转变为"01",而是将"四川"转变为"成都"。字典名中带有下划线_的类型不推荐使用replace

2.dict进行码值转换(推荐)

// dict = "YES_NO" , addressList = true表示导出时Excel单元格中配置下拉选
@Excel(name = "是否年龄限制",dict = YesNoEnum.TYPE, addressList = true,width = 30)
private String isAgeLimit;

根据配置的码表进行码值转换,不存在replace中的多个下划线导致替换有问题的情况

使用dict进行字典码值转换需要定义一个字典处理类并实现IExcelDictHandler接口

@Component
public class IExcelDictHandlerImpl implements IExcelDictHandler

接口的源码如图
image

    // <字典分类编码 -- <字典数据编码 -- 字典数据名称>>
    private Map<String, BiMap<String, String>> dictMap = new HashMap<>();

    // 省略dictMap初始化

    /**
     * 根据输入的字典类型编码,获取对应字典map(封装在List中)
     *
     * @param typeCode
     * @return
     */
    @Override
    public List<Map> getList(String typeCode) {
        List<Map> result = new ArrayList<>();
        BiMap<String, String> biMap = dictMap.get(typeCode);
        if (ValidateUtil.isEmpty(biMap)) return null;
        // 将字典数据转变为List<map>的格式返回,其中list.size()代表该字典枚举的数量,
        // list中每一个map只存储一个枚举的编码-名称
        for (Map.Entry<String, String> stringStringEntry : biMap) {
            Map<String, String> map = new HashMap<>();
            map.put("dictKey", stringStringEntry.getKey());
            map.put("dictValue", stringStringEntry.getValue());
            result.add(map);
        }
        return result;
    }


    // code -> name 对应导出
    @Override
    public String toName(String dict, Object obj, String name, Object value) {
        if (ValidateUtil.isEmpty(value)) {
            return null;
        }
        // 获取对应的字典
        BiMap<String, String> biMap = dictMap.get(dict);
        if (ValidateUtil.isEmpty(biMap)) {
            return value.toString(); // 当没有对应字典Map时,返回原数据
        }
        String result = biMap.get(value);
        if (ValidateUtil.isNotEmpty(result)) {
            return result;
        } else {
            return value.toString(); // 当没有对应字典值时,返回原数据
        }
    }

    // toCode方法类似,此处不再赘述

标签:return,String,替换,导入,dict,biMap,easypoi,码值,字典
From: https://www.cnblogs.com/saw-/p/17657585.html

相关文章

  • .NetCore WebAPI 导入、导出Excel文件 导入
    先下载一个NuGet包 在接口写方法//导入[HttpPost][Route("Import")]publicIActionResultImportExcel()//IFormFileformFile{try{varformFile=HttpContext.Request.Form.Files[0];//......
  • Excel导入与导出
    1、下载NuGet包 2、在API中创建一个文件夹,写一个Excel模版 3、在浏览器查看,需要使用中间件UseStaticFiles 4、在控制器中书写导入、导出方法;代码如下所示:1///<summary>2///Excel导入3///</summary>4///<returns></retu......
  • vue3中组件,api的自动导入
    vue3中ref,reactive等api和自定义组件等每个页面都要引入很麻烦,偷懒是人的天性,故引入自动导入插件,以此记录:1.vue3的api自动导入使用前:<scriptsetuplang="ts">import{ref,onMounted}from'vue'constimgUrl=ref("")constcanvas=ref()onMounted(()=>......
  • 导入导出(Excel)vue
     导入导出(Excel)首先 vue安装插件 (最后有完整代码)npm install xlsx file-saver其次:简单的导出按钮代码:<template>  <div>    <el-button type="primary" @click="exportExcel">导出 Excel</el-button>    <input      type="file&qu......
  • mysql导入sql文件“Index column size too large. The maximum column size is 767 by
    问题分析由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现该问题。说明注:以utf8mb4字符集字符串类型字段为例。utf8mb4是4字节字符集,默认支持的索引字段最大长度是191字符(767字节/4字节每字符......
  • PPT一键导入秒变视频?你没听错!有了这个神器,让你的PPT从基础到高级,转化为视频就像变魔术
    我们都知道PPT是一个绝对实用的工具,可以帮助我们展示演讲、产品介绍、项目计划等等。但是有时候,我们想把PPT变成视频的形式,这样更容易传播和分享啦!   那么你会制作PPT吗?你在使用中有遇到过一些困难吗?让我给你看看我身边几位朋友对PPT的感受吧! 企业朋友A说:......
  • .Net Core使用miniExcel实现导入导出
    .NetCore使用miniExcel实现导入导出首先,引入NuGet包:MiniExcel第三方插件一、导入    publicintUpLoadExecl()   {      //获取文件数据,[0]代表只能上传一个文件,如果要传递多个文件注意:文件名不能重复      varformInfor=HttpCo......
  • 使用easyexcel导入62个字段,十万加行数的excel
    使用easyexcel导入62个字段,十万加行数的excel1️⃣准备工作1.版本对应在easyexcel官网的常见问题栏中往下滑找到2.下载jar包maven项目不想多说,在pom.xml文件下,dependcy标签下引入就可以;在web_inf项目下需要手动引入jar包,在mvn中心仓库,下载对应jar包以及所依赖的其他jar包......
  • 2、postgres数据导入
    目录postgres数据导入1、数据导入2、导入不存在数据库处理3、整库导入postgres数据导入1、数据导入psql-fuser_export.sql-hlocalhost-Umypguser-Wmypostgres参数说明:-f读取的sql文件-h导入的ip地址-U导入的用户-W导入指定的数据库2、导入不存在数据库处理......
  • Unity FBX导入后,材质灰显不可编辑
    导入后要编辑材质的话,需要修改一个地方location这里表示材质的选择方式,embeddedmaterials(内嵌材料)修改成ExternalMaterials(外部材料)点apply,unity会自动帮你新建Materials文件夹,你就会获得对应材质贴图的材质球了......