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

相关文章

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

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能:可以根据前端传递的参数,导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDe

分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

1:MSSQL SQL语法篇: BULK INSERT      [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_name ]         FROM 'data_file'        [ WITH       (      [ [ , ] BATCHSIZE = batch_siz

获取所有classpath指定包下类的所有子类

1.问题 开发过程中,有时需要找到所有classpath下,特定包下某个类的所有子类,如何做到? 2. 实现 比较常见的解决方案是自己遍历目录,查找所有.class文件。 下面这个方法使用spring工具类实现,简化过程,不再需要自己遍历目录 /*** 获取在指定包下某个class的所有非抽象子类** @param parentClass 父类* @param packagePat

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

Pr 入门系列之二:导入与管理素材(下)

◆  ◆  ◆ 管理素材 导入素材后,项目面板中每一个媒体都只是原始素材的“链接”。 所以,视频编辑过程中一般情况下都不会破坏原始素材。 1、在不同视图模式下组织素材 项目面板提供了三大视图 View供选用:列表视图、图标视图以及自由格式视图。 A. 锁定 B. 列表视图 C. 图标视图 D. 自由格式视图 E. 缩放滑块 F. 排序图标 G. 自动匹配序列 H. 查找 I. 新建素材箱 J.