用java读excel时,碰到常规类型但全是数字或小数的,往往会自动加上.0或者自动读成科学计数法的解决办法
用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或者自动读成科学计数法的解决办法相关推荐
- 记录~页面table数据导出到excel时,数字或字符串显示成科学计数法的解决办法
在表格中的<td>标签中添加样式:style="mso-number-format:'\@';" <td style="width:90px;mso-n ...
- PHPEXCEL导出excel表格中长数字文本自动转为科学计数法的解决办法
转:https://www.cnblogs.com/fps2tao/p/9714041.html 方法一:前面加空格 $objActSheet->setCellValue('A1', ' '.' ...
- php导出数字成科学计数法,php导出excel长数字显示成科学计数法格式的解决方案...
php导出excel长数字显示成科学计数法格式的解决方案 首先,我们了解一下excel从web页面上导出的原理.当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所 ...
- PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法
PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法 参考文章: (1)PL/SQL中查询Oracle大数(17位以上)时显示科学计数法的解决方法 (2)https://www. ...
- csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法
csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法 参考文章: (1)csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计 ...
- c# 导出excel 数字太长而显示为科学计数法的解决方法
c# 导出excel 数字太长而显示为科学计数法的解决方法 <td style=\"vnd.ms-excel.numberformat:@\"> {0}</td& ...
- java导出的excel数字过长_用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)...
做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号"2546541656596",excel会自动变成科学计数法... 弄过好几次都没有解决,最 ...
- java excel poi导出时长数字变成科学计数法的解决方法
在导出excel文件的时候,有时候长的double数字就被变成科学计数法了,网上各种说法,要求设置HSSFCellStyle的format,试过之后也不能解决,后来发现问题的关键并不在这里. 原因是在 ...
- java读取EXCEL数据变成科学计数法,解决方法
1.如下图中的检测值存到数据库是科学计数法 2 经过代码处理后 3 只需要对你读到的字符串进行如下操作 BigDecimal bd = new BigDecimal("读到的值") ...
- 关于数据导出到Excel或wps时避免自动转成科学计数法的处理
SELECT '=T("'+字段+'")' from table 在显示的字段内容前加了 '=T("',在后面也加了'")'.在这这里T()是Excel的函数, ...
最新文章
- python yield用法
- 一些少见的下载地址(按需求更新)
- puppetter安装就踩坑-解决篇
- apache 和 nginx 301重定向配置方法
- Java单元测试(Junit+Mock+代码覆盖率)
- 经典ICP算法的问题
- 边框回归的损失函数_CVPR 2019:精确目标检测的不确定边界框回归
- JS编写自己的富文本编辑器
- android自动化(appium)
- VB.Net实现Ftp上传的方法
- mysql经典46_mysql练习46题 PDF 下载
- Neo4j清空数据库
- php怎么替换斜杠,PHP 反斜杠如何替换掉?
- 俄亥俄大学计算机科学专业,俄亥俄州立大学计算机科学专业研究生申请条件
- 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
- 中国知名科幻网站列表
- java的高精度大数字运算的问题
- python爬取头条付费专栏视频_Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】...
- 滴滴:WebApp实践经验总结
- python扫描器爬虫_Python扫描器-常用库-Request