EasyExcel导入去除所有空格

2024-06-15 08:28

本文主要是介绍EasyExcel导入去除所有空格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EasyExcel导入去除所有空格

EasyExcel导入有自带的autoTrim参数可以自动去除空格, 但不支持中文空格, 略显尴尬

故在issue3021找到了方案

然后稍作调整

自定义一个ConverterAdapter

package xxx.convert;import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import lombok.AllArgsConstructor;/*** @author ly-chn*/
@AllArgsConstructor
public class TrimStringCellDataAdapter<T> implements Converter<T> , TrimCellString{Converter<T> converter;@Overridepublic Class<?> supportJavaTypeKey() {return converter.supportJavaTypeKey();}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return converter.supportExcelTypeKey();}@Overridepublic T convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {return converter.convertToJavaData(trim(cellData), contentProperty, globalConfiguration);}
}

然后批量替换(这里是spring环境, 如果是其他环境自行在某个地方调用一下就行了, 只要是导入之前就行)

package xxx.runner;import cn.iocoder.yudao.framework.excel.core.convert.TrimStringCellDataAdapter;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ConverterKeyBuild;
import com.alibaba.excel.converters.DefaultConverterLoader;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import java.util.Map;/*** 加载excel自定义Convert* @author ly-chn*/
@Slf4j
@Component
public class ExcelTrimConvertLoadRunner implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {Map<ConverterKeyBuild.ConverterKey, Converter<?>> readConverts = DefaultConverterLoader.loadAllConverter();// 遍历并修改convertsfor (Map.Entry<ConverterKeyBuild.ConverterKey, Converter<?>> entry : readConverts.entrySet()) {ConverterKeyBuild.ConverterKey key = entry.getKey();Converter<?> converter = entry.getValue();if (key.getClazz() == String.class) {entry.setValue(new TrimStringCellDataAdapter<>(converter));}}}
}
package xxx.convert;import com.alibaba.excel.metadata.data.ReadCellData;
import com.sdjiashi.common.util.StrUtils;/*** 用于去除cell中的空格** @author ly-chn*/
public interface TrimCellString {default <T> ReadCellData<T> trim(ReadCellData<T> cellData) {if (cellData == null || cellData.getStringValue() == null) {return cellData;}String stringValue = cellData.getStringValue();cellData.setStringValue(StrUtils.removeNbsp(stringValue));return cellData;}
}

这篇关于EasyExcel导入去除所有空格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062930

相关文章

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi