用java读excel时,碰到常规类型,往往会自动加上.0或者自动读成科学计数法,如果确定所有的都不是小数的话很好解决,直接

new DecimalFormat("########").format(xssfSheet.getRow(k).getCell(j).getNumericCellValue());就可以解决问题。

但是这个项目偏偏不确定excel中是否有的是小数,还包括使用了科学计数法的小数,而且是要原封不动的保存下来,不能多.0和变成科学计数法,在网上查了,并没有关于这个的解决办法,于是研究了一下科学计数法的原理,写了一个解决办法可以完美解决

// 对纯数字和小数点的单元格进行处理(防止java读入double自动补.0和自动读成科学计数法)
    private static String customExcelNumericFormat(double d) {
        NumberFormat nf = NumberFormat.getNumberInstance();
        String temp = d + "";
        // 科学计数法中的n(10的n次方)
        int n = 0;
        // 判断有多少位有效小数
        int a = 0;
        // 如果该数字使用了科学计数法
        if (temp.indexOf("E") >= 0) {
            // 判断出要移多少位
            String auxiliaryStr = temp.split("E")[1];
            String realStr = temp.split("E")[0];
            n = Integer.parseInt(auxiliaryStr);
            // 有多少位有效小数(科学计数法)
            a = (realStr).length() - (realStr).indexOf(".") - 1 - n;
        } else {
            // 有多少位有效小数(非科学计数法)
            a = (d + "").length() - (d + "").indexOf(".") - 1;
        }
        if (a == 1 && (d + "").endsWith(".0")) {
            // 如果excel里本无小数是java读取时自动加的.0那就直接将小数位数设0
            nf.setMinimumFractionDigits(0);
        } else {
            // 有小数的按小数位数设置
            nf.setMinimumFractionDigits(a);
        }
        String s = nf.format(d);
        if (s.indexOf(",") >= 0) {
            s = s.replace(",", "");
        }
        return s;
    }

在之前java会将数字解析成下图

使用该方法后去掉了无效的.0并且完美的保留了数值原本样子,如下图

欢迎大家引用,本代码原创,转载记得@本人。

用java读excel时,碰到常规类型但全是数字或小数的,往往会自动加上.0或者自动读成科学计数法的解决办法相关推荐

  1. 记录~页面table数据导出到excel时,数字或字符串显示成科学计数法的解决办法

    在表格中的<td>标签中添加样式:style="mso-number-format:'\@';" <td style="width:90px;mso-n ...

  2. PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法

    转:https://www.cnblogs.com/fps2tao/p/9714041.html 方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.' ...

  3. php导出数字成科学计数法,php导出excel长数字显示成科学计数法格式的解决方案...

    php导出excel长数字显示成科学计数法格式的解决方案 首先,我们了解一下excel从web页面上导出的原理.当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所 ...

  4. PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法

    PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法 参考文章: (1)PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法 (2)https://www. ...

  5. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法 参考文章: (1)csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计 ...

  6. c# 导出excel 数字太长而显示为科学计数法的解决方法

    c# 导出excel 数字太长而显示为科学计数法的解决方法 <td style=\"vnd.ms-excel.numberformat:@\"> {0}</td& ...

  7. java导出的excel数字过长_用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)...

    做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号"2546541656596",excel会自动变成科学计数法... 弄过好几次都没有解决,最 ...

  8. java excel poi导出时长数字变成科学计数法的解决方法

    在导出excel文件的时候,有时候长的double数字就被变成科学计数法了,网上各种说法,要求设置HSSFCellStyle的format,试过之后也不能解决,后来发现问题的关键并不在这里. 原因是在 ...

  9. java读取EXCEL数据变成科学计数法,解决方法

    1.如下图中的检测值存到数据库是科学计数法 2 经过代码处理后 3 只需要对你读到的字符串进行如下操作 BigDecimal bd = new BigDecimal("读到的值") ...

  10. 关于数据导出到Excel或wps时避免自动转成科学计数法的处理

    SELECT '=T("'+字段+'")' from table 在显示的字段内容前加了 '=T("',在后面也加了'")'.在这这里T()是Excel的函数, ...

最新文章

  1. python yield用法
  2. 一些少见的下载地址(按需求更新)
  3. puppetter安装就踩坑-解决篇
  4. apache 和 nginx 301重定向配置方法
  5. Java单元测试(Junit+Mock+代码覆盖率)
  6. 经典ICP算法的问题
  7. 边框回归的损失函数_CVPR 2019:精确目标检测的不确定边界框回归
  8. JS编写自己的富文本编辑器
  9. android自动化(appium)
  10. VB.Net实现Ftp上传的方法
  11. mysql经典46_mysql练习46题 PDF 下载
  12. Neo4j清空数据库
  13. php怎么替换斜杠,PHP 反斜杠如何替换掉?
  14. 俄亥俄大学计算机科学专业,俄亥俄州立大学计算机科学专业研究生申请条件
  15. 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
  16. 中国知名科幻网站列表
  17. java的高精度大数字运算的问题
  18. python爬取头条付费专栏视频_Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】...
  19. 滴滴:WebApp实践经验总结
  20. python扫描器爬虫_Python扫描器-常用库-Request

热门文章

  1. C# NPOI 导出Excel 小数位数控制
  2. FPGA经验谈系列文章——写代码心中要有电路?
  3. 科技巨头们以 A 取名的时尚潮流
  4. Excel中无法查找和替换
  5. 汽车CAN通信基础知识-CAN数据结构
  6. 服务器上删掉的数据如何找回,在服务器数据丢失情况下如何恢复数据
  7. 定义客户类(Customer): 1,客户类的属性包括:姓名、年龄、电话、金钱数量、账号、密码; 2,方法包括:购买商品、付款、显示自己的信息。 3,创建测试类,在main方法中使用客户类创建两个客户
  8. 433MHz无线通信
  9. 支持向量积【SVM】
  10. 《惊人的假说-灵魂的科学探索》读书笔记(1)