当前位置: 首页 > 图灵资讯 > 技术篇> 数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇

来源:图灵教育
时间:2023-06-27 15:11:06

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_开发语言

悟纤:师傅,看你最近没有动静。EasyPoi导出是不是说完了?

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_数据_02

师傅:那到没有,那些用途还没说。

悟纤:还有什么?

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_java_03

大师:如数据脱敏、换行、枚举、模板文件导出等。

悟纤:学习知识还是那么多的。让我消化...

师傅:今天我们先来谈谈简单,放松一下。

悟纤:师傅,那就赶紧开始吧。

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_开发语言_04

导读

前面介绍了很多关于导出的方法和技巧,本节就数据脱敏、换行、枚举等问题进行了数据处理。

一、换行

1.1用换行符号换行

首先可以指定换行符号\n进行换行,如下所示:

users.add(new UserExportVO(“悟纤”,1,new Date(),“18688888888”,“168888”@qq.com",bytes,"公众号\nSpringBoot"));

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_字段_05

1.2模板文件中

使用easypoi模板导出表格时,可以使用easypoi提供的br函数实现单元格中的强制换行。

例如,在导出的Excel模板中使用${br(text)}代表text字符串中每个换行符的换行。

至于如何使用模板文件导出,将在下面的小节中进行介绍。本节不会先解释。

二、数据脱敏

数据脱敏有两种方法,一种是简单的,可以在注释或ExcelExportentity中设置属性,规则如下:

(1)规则1:采用保留头尾、中间数据和星号的方式

如果身份证6_4,保留370101********

手机号 3_4保留131****124

(2)规则2:采用确定隐藏字段的方式进行隐藏,首先保留头部

例如,姓名1、3表示最大隐藏3位,最小隐藏3位

李--> *

李三-->李*

张全蛋 -->张*蛋

李张全蛋-->李**蛋

尼古拉斯.李张全蛋->尼古拉***张全蛋

(3)规则3:保留特殊符号后

例如:邮箱1~@表示只保留第一个和@之后的字段

afterturn@wupaas.com -> a********@wupaas.com

请使用复杂版本的接口{@link cn.afterturn.easypoi.handler.inter.IExcelDataHandler}也就是说,系统不单独处理数据接口本身的脱敏规则。

常用的脱敏规则如下:注释使用简单:

@Excel(name = "姓名", desensitizationRule = "1,6")    private String name;    @Excel(name = “身份证”, desensitizationRule = "6_4")    private String card;    @Excel(name = “手机号”, desensitizationRule = "3_4")    private String phone;    @Excel(name = "邮箱", desensitizationRule = "3~@")    private String email;

这样,您就可以修改以前的代码:

@Excel(name = "姓名",width = 15,desensitizationRule = "1,3")private String realName;//@Excel(name = "性别",replace = { "男_1", "女_2" }, suffix = "生")@Excel(name = "性别",replace = { “男孩_1”, "女生_2" }, addressList = true)//@Excel(name = "性别",dict = "sex",addressList = true)private Integer sex;@Excel(name = “出生日期”,format = "yyyy-MM-dd",width = 15)private Date birthday;@Excel(name = “手机号”,width = 20,desensitizationRule = "3_4")private String phone;@Excel(name = "邮箱",width = 20,desensitizationRule = "1~@")private String email;

导出结果如下:

数据脱敏/换行/枚举的处理【EasyPoi实战系列】- 第474篇_java_06

三、枚举类型

实体对象属性是枚举支持的几种处理模式,如下三个总数、最基本的无值数据、有值和固定方法:

private Sex sex; //第一种    @Excel(name =“基本状态” )    private StatusEnum baseStatus; //第二种    @Excel(name ="状态" , enumExportField = "message",                        enumImportMethod = "getByMessage")    private StatusEnum status;//第三种

相应的Sex枚举类:

public enum Sex {    /**     * 男     */    MAN,    /**     * 女     */    WOMAN}

Statusenumum对应:

public enum StatusEnum {    Init(0, “初始化”),    Ready(1, “正常”),    ChangePassword(2, “需要修改密码”),    Frozen(4, “冻结”),    Disabled(64, "禁用");    private final Integer _code;    private final String _message;    StatusEnum(Integer code, String message) {        _code = code;        _message = message;    }    public Integer getValue() {        return _code;    }    public String getMessage() {        return _message;    }    public static StatusEnum getByMessage(String message){        StatusEnum[] arr =  StatusEnum.values();        for (int i = 0; i < arr.length; i++) {            if (arr[i]._message.equals(message)){                return arr[i];            }        }        return null;    }}

第一个和第二个是输出原始值,MAN,枚举值,如Init

三是输出相应的方法值,Easypoi适应反射调用getByMessage获取方法值