JAVA使用POL导入Excel解决数据精度问题

  • 解决导入时数据精度损失问题
    • 问题描述
    • 解决方案
    • 结语

解决导入时数据精度损失问题

这篇文章主要是给Excel数据导入时存在精度损失问题提出解决方案。如果你想知道怎么解决,可仔细阅读, 可以仔细阅读这篇文章。

问题描述

我在前段时间开发中涉及到一个关于excel模板导入并且入库的需求,中间在使用wps提供的excel文档并没有出现问题,问题出现在我们测试小姐姐使用office提供的excel文档导入时出现了如同所示的问题

1.在文档中是137.8

2.导入后精度加了

具体为什么wps和office解析出来的结果会有所不同,我也不知道,我在网上看来很多方法,最终结合起来写出如下代码

解决方案

先定义如下方法

public String getCellValue(Cell keyCell){// 取得类型int cellType = keyCell.getCellType();// 定义接收String cellValue = "";switch (cellType) {case Cell.CELL_TYPE_NUMERIC: // 数字double numericCellValue = keyCell.getNumericCellValue();// 核心代码 ⇒ 用于解决科学计数法导致的数字转码问题DataFormatter dataFormatter = new DataFormatter();dataFormatter.addFormat("###########", null);String driveriphone = dataFormatter.formatCellValue(keyCell);      // 这个 IsNumber()是我定义的一个正则,主要用来校验是否是存数字if (IsNumber(driveriphone)) {keyCell.setCellType(CellType.STRING);cellValue = keyCell.getStringCellValue();} else {cellValue = Double.toString(numericCellValue);}break;case Cell.CELL_TYPE_STRING: // 字符串cellValue = String.valueOf(keyCell.getStringCellValue());break;case Cell.CELL_TYPE_BOOLEAN: // BooleancellValue = String.valueOf(keyCell.getBooleanCellValue());break;case Cell.CELL_TYPE_FORMULA: // 公式try {double numericCellValue1 = keyCell.getNumericCellValue();cellValue = Double.toString(numericCellValue1);} catch (IllegalStateException e) {cellValue = String.valueOf(keyCell.getRichStringCellValue());}break;case Cell.CELL_TYPE_BLANK: // 空值cellValue = "";break;case Cell.CELL_TYPE_ERROR: // 故障cellValue = "非法字符";break;default:cellValue = "未知类型";break;}return cellValue;
}//  正则代码private static boolean match(String regex, String str) {Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(str);return matcher.matches();}//  正则代码public static boolean IsNumber(String str) {String regex = "^[0-9]\\d*$";return match(regex, str);}

结语

把这个代码结合自身业务代码,选择性放入到合适的位置,即可使用

JAVA使用POL导入Excel解决数据精度问题相关推荐

  1. autopoi-web 导入 excel 解决二级表头重复问题(含前端示例)

    文章目录 一.简介 二.导入 autopoi-web 包 三.定义实体类 四.导入方法 五.测试结果 六.前端示例 一.简介 因为模板的 excel 列头不能修改,所以只能在代码层处理,目前我想到的解 ...

  2. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  3. Java web批量导入excel表格的数据进入数据库的实现

    1.导入poi相关jar包 对于只操作2003及以前版本的excel,只需要导入poi-XXX.jar ,如果还需要对2007及以后版本进行操作,则需要导入 poi-ooxml-XXX.jarpoi- ...

  4. java txt数据导入excel,java导入excle文件《如何用java 将txt数据导入excel》

    如何用java 将txt数据导入excel 代码如下: import java.io.*; import jxl.*; import jxl.write.*; public class CreateX ...

  5. java使用poi导入excel小数被四舍五入问题解决

    出现问题:使用java poi导入带有小数的数据老是被自动的四舍五入掉,导致数据出错 解决办法:使用DecimalFormat处理被导入的数据 DecimalFormat df = new Decim ...

  6. java的poi导入Excel文件

    首先看看前台写法: <form action="poi/upload.do" method="post" enctype="multipart/ ...

  7. java利用pol导出excel

    jsp代码 <script type="text/javascript"> //导出Excel数据   function ShowExport() {      $.a ...

  8. Java使用poi导入Excel

    首先导入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base&l ...

  9. java excel导入太慢_[Java] 高效快速导入EXCEL数据

    public voidaddAll(String url){//生成一个备用码 String guid=RandomUtils.myGetNo(9);//将excel数据转为集合并以100条每次的节奏 ...

最新文章

  1. 测试用例设计方法基础理论知识
  2. java enum.isdefined_Enum.IsDefined 方法 (System) | Microsoft Docs
  3. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper
  4. 如何发布php网站_php网站如何发布【货币问答】- 联合货币
  5. IOS开发学习笔记011-xcode使用技巧
  6. 使用jsp打印HTTP请求头部所有字段的值
  7. [html] p标签里面嵌套img标签会出现向上高3像素是什么原因?如何处理?
  8. php 递归栏目名叠加,thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法,thinkphp递归...
  9. 微信小程序自带地图_微信小程序地图上选择位置
  10. Chrome、Edge 合力围剿,Safari 夹缝求生?
  11. Security中常见的权限控制方式
  12. Spring Cloud (4)---Eureka(服务注册与消费详解)
  13. oracle--存储过程--bai
  14. swift流行UI库(github)
  15. 使用大华sdk批量下载视频文件、批量转换格式
  16. 走进JavaWeb技术世界11:单元测试框架Junit
  17. parameterize
  18. 记住键盘快捷键大全 提高电脑操作速度
  19. 125页6万字智慧城市系统及智慧城市运营中心建设技术方案
  20. 电脑如何分盘、合盘?关于硬盘的分盘,你所不知道的那些事情

热门文章

  1. GM8913型DC平衡双向控制器LVTTL转FPD-LINK
  2. 在Windows 7 Media Center中无需电视调谐器观看电视节目
  3. M1 MacBook 续航太好,苹果以为电量指示器坏了
  4. 我的ubuntu(持续更新中)
  5. 企业为什么要建立独立电商网站?
  6. Python——简陋的n阶魔方模拟
  7. 高性能架构学习路线图-分布式架构演进,mybatis一对一一对多面试题
  8. 手动清除2345流氓主页小记录以及对过去的一些回忆
  9. 2018,程序员生活的两个兴趣爱好
  10. HDU 5183 Negative and Positive (NP) (set + 读入外挂 乱搞)