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 ...
随机推荐
- 用nodejs安装hexo,将hexo部署到github
跌跌撞撞写这篇博文,希望下一篇可以好点 运行环境:最新版本的nodejs + git 安装好nodejs 和 git ,注册好github账号,新建仓库****.github.io(****为gith ...
- HDU 4548 美素数(打表)
HDU 4548 美素数(打表)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/H 题目 ...
- Eclipse之报错信息及其解决方案
一.有很多人都喜欢开发js的时候用aptana,因此在eclipse中集成aptana插件是必须的,可是,在用link方式在eclipse中安装好aptana后,启动时会报如下错误 An intern ...
- Android Bug 记录
1.Unable to resolve target 'android-5' 无法解析目标 ' 安卓系统-5' Unable to resolve target 'Google Inc.:G ...
- Laravel 5.1 ACL权限控制 四 之middleware
1.创建Middleware php artisan make:middleware MustBeAnAdmin 2.实现 MustBeAnAdmin.php中的handle方法,判断登录的用户是否为 ...
- apache下的IfModule里设置含义
<IfModule mod_deflate.c> SetOutputFilter DEFLATE #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩 SetEnvIf ...
- Regex阅读笔记(五)java操作篇
首先一个demo程序 Java的正则表达式包为java.util.regex,主要是使用其中的Pattern和Matcher. groupCount方法时候都可调用,而大多数方法都必须在匹配尝试成功之 ...
- Java学习之自定义异常
1 package com.gh; import java.util.Scanner; /** * 自定义异常 * @author ganhang * */ public class Exceptio ...
- java基础知识----IO篇
写在前面:本文章基本覆盖了java IO的所有内容.java新IO没有涉及.文章依然以样例为主,由于解说内容的java书非常多了,我觉的学以致用才是真.代码是写出来的,不是看出来的. 最后欢迎大家提出 ...
- C++拷贝构造函数详解
转自:http://blog.csdn.net/lwbeyond/article/details/6202256 对于一个空类,编译器默认生成四个成员函数:默认构造函数.析构函数.拷贝构造函数.赋值函 ...