java操作Excel处理数字类型的精度损失问题验证
java操作Excel处理数字类型的精度损失问题验证:
场景:
CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC
POI版本:
poi-3.10.1
poi-3.9
Code:
package poi; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; public class DoubleWithStringNumeric { private static final String excelName="DoubleWithStringNumberic.xls";
public static void main(String[] args) throws IOException {
int double_idx=0;
int double2String_idx=1;
int string2double_idx=2;
Workbook wb=new HSSFWorkbook();
Sheet sheet=wb.createSheet("DoubleWithStringNumberic");
Row row=sheet.createRow(1);
Cell cell=row.createCell(double_idx);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(99.333333); persistWorkbook(wb); travelSheet(); System.out.println("Type: CELL_TYPE_NUMERIC==>CELL_TYPE_STRING");
InputStream s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
row=sheet.getRow(1);
cell=row.getCell(0);
Double d=cell.getNumericCellValue(); cell=row.createCell(double2String_idx);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(String.valueOf(d)); persistWorkbook(wb);
s.close(); travelSheet(); System.out.println("Type: CELL_TYPE_STRING==>CELL_TYPE_NUMERIC");
s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
row=sheet.getRow(1);
cell=row.getCell(double2String_idx);
String double2String=cell.getStringCellValue();
cell=row.createCell(string2double_idx);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(Double.parseDouble(double2String));
persistWorkbook(wb);
s.close(); travelSheet(); } private static void travelSheet() throws FileNotFoundException, IOException {
Workbook wb;
Sheet sheet;
InputStream s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
for (Row row_temp : sheet) {
for (Cell cell_temp : row_temp) {
getCellValue(cell_temp);
}
}
s.close();
} private static void getCellValue(Cell cell) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.println("CELL_TYPE_NUMERIC:"+cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
String stringCellValue = cell.getStringCellValue();
System.out.println("CELL_TYPE_STRING:"+stringCellValue);
System.out.println("toDouble:"+Double.parseDouble(stringCellValue));
break;
default:
System.out.println("error");
break;
} } private static void persistWorkbook(Workbook wb)
throws FileNotFoundException, IOException {
OutputStream stream=new FileOutputStream(excelName);
wb.write(stream);
stream.flush();
stream.close();
} }
Output:
CELL_TYPE_NUMERIC:99.333333
Type: CELL_TYPE_NUMERIC==>CELL_TYPE_STRING
CELL_TYPE_NUMERIC:99.333333
CELL_TYPE_STRING:99.333333
toDouble:99.333333
Type: CELL_TYPE_STRING==>CELL_TYPE_NUMERIC
CELL_TYPE_NUMERIC:99.333333
CELL_TYPE_STRING:99.333333
toDouble:99.333333
CELL_TYPE_NUMERIC:99.333333
结论:
此场景无精度损失。
java操作Excel处理数字类型的精度损失问题验证的更多相关文章
- java操作Excel、PDF文件
java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...
- java操作excel 工具类
java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...
- Java操作Excel文件以及在Android中的应用
本文章由临江仙原创,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/10286563 Excel作为一种有格式的文件,可以使用Java来对 ...
- Java 操作 EXCEL
今天帮朋友写了一段用来处理EXCEL内容的程序,在这里记录下自己的学习过程.主要是对EXCEL表格中的内容做分类和统计,使用计算机来做这种重复的机械性地工作再好不过了.首先,我们需要下载一个java操 ...
- JAVA操作Excel时文字自适应单元格的宽度设置方法
使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...
- jxl的使用总结(java操作excel)
jxl.jar是通过java操作excel表格的工具类库: jxl.jar包:链接:http://pan.baidu.com/s/1o8qFJHw 密码:5jyq 1:通过模拟实现创建一个表格,然后模 ...
- 【转载】jxl的使用总结(java操作excel)
jxl.jar是通过java操作excel表格的工具类库: 链接:https://pan.baidu.com/s/1AAT_eA_Q47zFeQohap6eQg 提取码:777b 1:通过模拟实现创建 ...
- java操作excel文件
采用POI操作excel API:http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html poi包:http ...
- java操作excel总结---poi
前不久做过Excel的导入导出功能,其主要的难点是java如何操作Excel文档.现在就来介绍一下利用Apache的poi如何操作Excel. 1.准备工作:导入Apache POI的相关jar包,P ...
随机推荐
- Implement custom foreach function in C#
http://msdn.microsoft.com/en-us/library/System.Collections.IEnumerator.aspx http://support.microsoft ...
- iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
项目地址 : https://github.com/zhonggaorong/QQLoginDemo/tree/master 最新版本的qq登录实现步骤实现: 1. 首先,你需要去向腾讯申请账号. ...
- 使用phpQuery实现批量文件处理
能够将置顶文夹下的指定类型文件进行处理 <?php header('Content-Type:text/html;Charset=utf-8'); include './phpQuery/php ...
- box-shadow 被其他div遮住 shadow was hidden/covered by another div
使用z-index 来处理 (z-index必须在使用了position的情况下才有效) 参考http://stackoverflow.com/questions/5505118/css-box-sh ...
- KBMMW SampleService/SampleClient方式传输数据集
马上周末了,趁着下午这会儿回顾一下这几天对旧项目的升级过程,一些重要但不常用的东西记录下来是很有必要的.其中一个项目中对KBMMW的远程数据通讯方式做了改进,利用SampleService/Sampl ...
- python none,null,,,,,类型
内建类型None表示一个空对象,没有方法和属性. None是一个特殊的常量. None和False不同. None不是0. None不是空字符串. None和任何其他的数据类型比较永远返回False. ...
- 最短路Dijkstra和Flyod
Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要 ...
- android 修改背景色(转)
修改为黑底白字 修改AndroidManifest.xml把android:theme="@style/AppTheme" 修改为android:theme="@andr ...
- 开机时进入 grub rescue>的解决方法
本机是centOS7和win8的双系统 之前在win上把一个空的磁盘空间释放了 可能造成了grub的一些问题 具体还没有研究过 开机后无法正常进入grub引导画面 而是跳出一串英文+ grub res ...
- 【剑指Offer学习】【面试题18 :树的子结构】
题目:输入两棵二叉树A 和B.推断B 是不是A 的子结构. 二叉树结点的定义: /** * 二叉树的树结点 */ public static class BinaryTreeNode { int va ...