解决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;
    }

处理结果

相关推荐
峥嵘life6 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
M-Robots echo6 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~7 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
mldong8 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe9 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一519 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
gugucoding9 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nebula_g10 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__10 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
AC赳赳老秦10 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw