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

相关文章

在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

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Collection的所有的方法演示

import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class TestCollection {/*** @param args* Collection的所有的方法演示* 此程序没有使用泛型,所以可以添加任意类型* 以后如果写到泛型会补充这一方面的内容*/public s

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

mysql中导入txt文件数据的操作指令

1 表tt的格式:    CREATE TABLE `tt` (   `ind` int NOT NULL auto_increment,   `name` char(100) default NULL,   PRIMARY KEY  (`ind`)  )   2 文件d.txt的内容示例:  1,a  2,b  3,c