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

news2025/2/13 12:54:29

历史文章(文章累计460+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

【EasyPoi实战系列】Spring Boot使用EasyPoi动态控制导出的列 - 第471篇100万数据导出,居然爆炸了OutOfMemoryError?【EasyPoi实战系列】- 第472篇

导出下拉列表的两种小技巧【EasyPoi实战系列】- 第473篇

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

师傅:那到没有,那些使用还没讲呢。

悟纤:还有什么?

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

悟纤:居然还有这么多的知识要学习。容我消化下…

师傅:今天咱们先讲讲简单的,放松一下。

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

导读

在前面介绍了有关导出的很多方法和技巧,这一节针对数据脱敏、换行、枚举的情况在聊聊导出的数据处理。

一、换行

1.1 使用换行符号进行换行

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

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

1.2 模板文件中

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

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

至于如何使用模板文件进行导出,在下面的小节会进行介绍,这一节,先不展开进行讲解了。

二、数据脱敏

数据脱敏分为两种方法,一种是简单的,在注解或者ExcelExportEntity设置属性既可以,规则如下:

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

如: 身份证 6_4 则保留 370101********1234

手机号   3_4 则保留 131****1234

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

如: 姓名 1,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;

导出结果如下:

三、枚举类型

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

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

对应的Sex枚举类:

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

对应的StatusEnum:

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方法获取方法值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDP分布式训练中遇到的一些问题

1&#xff1a;所有forward的输出必须参与到loss计算并回传 2&#xff1a;类似于layer_norm这样的操作是无需进行分布式通信的&#xff0c;也无法进行分布式通信&#xff0c;所以在DDP的时候必须把find_unused_parameters设置为True 3&#xff1a;当报错形式为如下时&#xff…

C语言之指针初阶(2)

目录 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 上次我们已经把前4个部分给大家讲完了&#xff0c;现在我们来讲一下后面三个部分 首先看数组和指针 指针和数组之间是什么关系呢&#xff1f; 指针变量就是指针变量&…

ELF文件结构和实战分析

文章目录 示例编译运行 ELF文件格式ELF HeaderELF Section Header Table (节头表)sh_typesh_flagssh_link、sh_info 节链接信息 ELF Sections节的分类.text节.rodata节.plt节&#xff08;过程链接表&#xff09;.data节.bss节.got.plt节&#xff08;全局偏移表-过程链接表&…

小黑和阿黄骑车逛了逛河堤,今天练完钢琴小汤3第5课后和小老黑吃拉面夜里准备天津小黄车骑行的leetcode之旅:567. 字符串的排列

小黑代码 class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:# s1与s2的长度n_s1 len(s1)n_s2 len(s2)# 非法情况if n_s1 > n_s2:return False# 初始化差值向量count [0] * 26# 判断初始状态是否成立for i in range(n_s1):count[ord(s1[i])-97] - …

MySQL数据库 --- 高级篇

一、存储引擎 1.1、MySQL体系结构 1.1.1、连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为…

Mybatis-Plus中update更新操作用法

目录 一、前言二、update1、关于修改的4个条件构造器2、UpdateWrapper【用法示例】3、LambdaUpdateWrapper【用法示例】4、UpdateChainWrapper【 用法示例】5、LambdaUpdateChainWrapper【 用法示例】6、updateById 和 updateBatchById7、Mybatis-plus设置某个字段值为null的方…

Fiddler Response私人订制,你知道多少

目录 前言 特定返回状态码的模拟 特定字段数据的模拟 修改“Customize Rules" 特定加密返回值的模拟 Fiddler的TextWizard 结束语 总结&#xff1a; 前言 在客户端接口的测试中&#xff0c;我们经常会需要模拟各种返回状态或者特定的返回值&#xff0c;常见的是用…

MySQL数据库 --- 基础篇

一、MySQL概述 1.1、数据库相关概念 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase&#xff08;DB&#xff09;数据库管理系统操纵和管理数据库的大型软件DataBase Management、System (DBMS)SQL操作关系型数据库的编程语言&#xff0c;定义了…

【网络安全】深入解析 PHP 代码审计技术与实战

前言 登录某个网站并浏览其页面时&#xff0c;注意到了一些看起来不太对劲的地方。这些迹象可能是该网站存在漏洞或被黑客入侵的标志。为了确保这个网站的安全性&#xff0c;需要进行代码审计&#xff0c;这是一项专门针对软件代码进行检查和分析的技术。在本文中&#xff0c;…

从汇编代码探究函数栈帧的创建和销毁的底层原理

人&#xff0c;只有在放弃战斗的时候才算输&#xff0c;只要坚持战斗&#xff0c;就还没输 本文收录于青花雾气-计算机基础 往期回顾 从0到1搞定在线OJ 数据在内存中的存储 计算机存储的大小端模式 目录 一、先导知识 二、函数调用堆栈 三、函数栈帧的创建 1.创建函数…

计算机图像处理—HOG 特征提取算法

一、实验介绍 1. 实验内容 本实验将学习HOG 特征提取算法。 2. 实验要点 HOG 算法HOG 算法有效的原因创建 HOG 描述符HOG 描述符中的元素数量可视化 HOG 描述符理解直方图 3. 实验环境 Python 3.6.6numpymatplotlibcv2copy 二、实验步骤 简介 正如在 ORB 算法中看到的…

机器学习—支持向量机

练习5&#xff1a;支持向量机 介绍 在本练习中&#xff0c;我们将使用支持向量机&#xff08;SVM&#xff09;来构建垃圾邮件分类器。 在开始练习前&#xff0c;需要下载如下的文件进行数据上传&#xff1a; data.tgz -包含本练习中所需要用的数据文件 其中&#xff1a; e…

华为OD机试 JavaScript 实现【计算字符串的编辑距离】【牛客练习题 HJ52】,附详细解题思路

一、题目描述 Levenshtein 距离&#xff0c;又称编辑距离&#xff0c;指的是两个字符串之间&#xff0c;由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符&#xff0c;插入一个字符&#xff0c;删除一个字符。编辑距离的算法是首先由…

后端(二):Servlet

我们上一张聊的是Tomcat&#xff0c;它其实就是一个 HTTP 服务器&#xff0c;而Servlet 是基于 Tomcat 的 原生api &#xff0c;除了 Servlet&#xff0c;后面还有聊到很多 api 。 Servlet 是什么 Servlet&#xff08;Server Applet&#xff09;是Java Servlet的简称&#xf…

【知识点复习】结构体与共用体

结构体和共用体各有什么特点&#xff1a; 1、结构体中每一个成员都有自己的内存空间&#xff0c;计算结构体大小的时候要注意内部字节对齐&#xff1b; 32位占4字节&#xff0c;64位占8字节。 结构体访问成员&#xff1a;点降级访问 2、共用体又叫联合体union&#xff0c;每一…

我的256创作纪念日

机缘 挺开心的&#xff0c;想到自己未曾写过一些非技术类的博客&#xff0c;恰巧今天刚好也是我的256创作纪念日&#xff0c;就乘着这个日子&#xff0c;写一点自己过去的收获、内心的想法和对未来的展望吧。 本人不才&#xff0c;只就读于一所民办本科之中&#xff0c;我挺不想…

ASCON:以“慢而稳”赢得NIST轻量级加密算法标准

1. 引言 自2016年以来&#xff0c;NIST一直在评估轻量级加密方法&#xff0c;并于2022年发布了入围决赛的10种轻量级加密算法&#xff1a; ASCONElephantGIFT-COFBGrain128 AEADISAPPhoton BeetleRomulusSparkleTinyJambuXoodyak 在评估过程中&#xff0c;NIST重点关注&#…

使用Python把文件夹里面的图片放入一个pdf

文章目录 背景介绍代码代码分析展示 背景介绍 在看一位up主的“矩阵分析”课程的时候&#xff0c;up主的课件是以图片形式保存在QQ空间的。图片形式不便于学习&#xff0c;所以想要通过Python代码&#xff0c;把保存在“矩阵分析课件”里面的图片&#xff0c;转换为pdf&#x…

Qt函数运用

setwidget 文件 文件读写 链接 std::ifstream---std::ofstream 头文件--#include <fstream> 执行都是类&#xff0c;用这些类操作文件都要建立对象流。 1&#xff0c;建立对象流 流对象的建立有两种方式&#xff1a; &#xff08;1&#xff09;使用fstream类可以…

内网安全:Socks 代理 || 本地代理 技术.

内网安全&#xff1a;Socks 代理 || 本地代理 技术. Socks 代理又称全能代理&#xff0c;就像有很多跳线的转接板&#xff0c;它只是简单地将一端的系统连接到另外一端。支持多种协议&#xff0c;包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型&#xff0…