解决java读取EXCEL数据变成科学计数法的问题

文章目录

问题背景

excel导入数据经常遇到会有手机号或身份证号导入后变成科学计数法的形式给维护数据带来了很多麻烦

此时手机号是数字的形式,而我们需要的是字符的形式,如下图,特征是有个绿色三角的上标

解决方案

解决思路

考虑问题一般从,输入,处理,输出三个方面考虑。那么可以首先调整导入的数据本身,主动调整成正确的格式,或者在处理逻辑的时候进行判断调整,因此我们可以有两个方案

1.修改导入excel数据本身为字符

在excel文件中,选中手机号列--数据--分列--下一步--下一步--文本--完成再重新导入即可

本方法适用于无法调整代码逻辑的情形,比如线上环境。

缺点显而易见,每次维护数据都得注意格式

2.代码逻辑处理科学计数法

2.1处理逻辑

拿到excel上传为字符串 -> 正则去匹配校验字符串是否为科学计数法 -> 是,则将科学计数法字符串转化成数字的字符串 -> 赋值给原有的变量

2.2show me the code

java 复制代码
    /**
     * 将科学计数法文本转换成字符文本
     * @param number
     * @return
     */
    public String translateToPlainStr(String number) {
        if (StringUtil.isNull(number)) {
            return number;
        }
        String regEx="^([\\+|-]?\\d+(.{0}|.\\d+))[Ee]{1}([\\+|-]?\\d+)$";
        // 编译正则表达式
        Pattern pattern = Pattern.compile(regEx);
        // 忽略大小写的写法
        // Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(number);
        // 字符串是否与正则表达式相匹配
        boolean rs = matcher.matches();
        // 判断是否为字符串的科学计数法
        if(rs){
            // 科学计数法转数字
            BigDecimal originValue = new BigDecimal(number);
			 System.out.println("手机号为 ==> " + one.toPlainString());
            // 数字转字符串
            return originValue.toPlainString();
        }
        return number;
    }

处理结果

相关推荐
niucloud-admin3 分钟前
java服务端——controller控制器
java·开发语言
To Be Clean Coder4 分钟前
【Spring源码】通过 Bean 工厂获取 Bean 的过程
java·后端·spring
Fortunate Chen10 分钟前
类与对象(下)
java·javascript·jvm
程序员水自流12 分钟前
【AI大模型第9集】Function Calling,让AI大模型连接外部世界
java·人工智能·llm
‿hhh14 分钟前
综合交通运行协调与应急指挥平台项目说明
java·ajax·npm·json·需求分析·个人开发·规格说明书
小徐Chao努力15 分钟前
【Langchain4j-Java AI开发】06-工具与函数调用
java·人工智能·python
无心水17 分钟前
【神经风格迁移:全链路压测】33、全链路监控与性能优化最佳实践:Java+Python+AI系统稳定性保障的终极武器
java·python·性能优化
萧曵 丶26 分钟前
Synchronized 详解及 JDK 版本优化
java·多线程·synchronized
夏幻灵41 分钟前
JAVA基础:基本数据类型和引用数据类型
java·开发语言
weixin199701080161 小时前
闲鱼 item_get - 商品详情接口对接全攻略:从入门到精通
java·后端·spring