java poi导入纯数字等格式问题及解决

目录
  • poi导入纯数字等问题
  • poi获取Cell内容:数字之格式化
    • 原因
    • DecimalFormat

poi导入纯数字等问题

用poi导出excel时候,如果单元格设置纯数字,输入的数据一旦过大就是自动显示成科学记数法,导致导入后的数据出错,解决方式,后台获取导出文件后,强制转换单元格属性,就能完美解决,也适用于其他单元格格式引起的数据导入异常

Cell cellCode = r.getCell(1);
cellCode.setCellType(CellType.STRING);  
info.setCode(r.getCell(1).getStringCellValue());

poi获取Cell内容:数字之格式化

今天,收到业务方的诉求,说是excel 导入的金额,全被四舍五入了。

然后查看了一下代码:初始的时候眼花缭乱,真的是看不下去。但是想一想,作为程序员,不能拒绝为人民服务。于是乎,debug 了一下。我也真是够懒的,不想直接追代码,debug去了……

原因

找到了具体的原因:

if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    DecimalFormat format = new DecimalFormat("#");
    double num = xssfRow.getNumericCellValue();
    String res = format.format(num);
    //……
}

上面代码中,把数字格式化为整数了。当然,如果直接获取 value 也不会有问题。

如下:

if (xssfRow.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    DecimalFormat format = new DecimalFormat("#");
    double num = xssfRow.getNumericCellValue();
    String res = format.format(num);
    // num 和 res 的取值差不多。 如: 50.00 : num 为 50.00,res 为 50; 123.23, num 为123.23, res为123.23
    System.err.println(num + "--" + res);
    //……
}

DecimalFormat

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。帮你用最快的速度将数字格式化为你需要的样子。DecimalFormat 包含一个模式 和一组符号 。

DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。

符号含义: 

  • 0 一个数字
  • # 一个数字,不包括 0
  • . 小数的分隔符的占位符
  • , 分组分隔符的占位符
  • - 缺省负数前缀。
  • % 乘以 100 和作为百分比显示

例子:

    public static void main(String[] args) {
        double pi=3.1415927;//圆周率
        //取一位整数
        System.out.println(new DecimalFormat("0").format(pi));//3
        //取一位整数和两位小数
        System.out.println(new DecimalFormat("0.00").format(pi));//3.14
        //取两位整数和三位小数,整数不足部分以0填补。
        System.out.println(new DecimalFormat("00.000").format(pi));//03.142
        //取所有整数部分
        System.out.println(new DecimalFormat("#").format(pi));//3
        //以百分比方式计数,并取两位小数
        System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
 
        long c=299792458;//光速
        //显示为科学计数法,并取五位小数
        System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
        //显示为两位整数的科学计数法,并取四位小数
        System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
        //每三位以逗号进行分隔。
        System.out.println(new DecimalFormat(",###").format(c));//299,792,458
 
        System.out.println(new DecimalFormat("-###").format(c));//299,792,458
        System.out.println(new DecimalFormat("#.##?").format(c));//299,792,458
        //将格式嵌入文本
        System.out.println(new DecimalFormat("光速大小为每秒,###米").format(c)); //光速大小为每秒299,792,458米
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java使用POI批量导入excel数据的方法

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取excel的demo 1.读取文件方法 /** * 读取出filePath中的所有数据信息 * @param filePath excel文件的绝对路径 * */ public static void getDataFromExcel(String filePath) { //String fileP

  • Java 使用poi把数据库中数据导入Excel的解决方法

    Java 利用poi把数据库中数据导入Excel 效果: 使用时先把poi包导入工程的path,注意只需要导入poi包即可,下载后有三个jar包 核心代码: 连接数据库:DBConnection.java 复制代码 代码如下: package org.xg.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;i

  • Java POI读取excel中数值精度损失问题解决

    描述: excel 单元格中,纯数字的单元格,读取后 后面会加上 .0 . 例如: 1 --> 1.0 而使用下面的方法,可能会对小数存在精度损失 cell.setCellType(CellType.STRING); //读取前将单元格设置为文本类型读取 例如: 2.2 --> 2.1999999997 目前的解决办法: 一. 将excel单元格改为文本类型 注意,直接修改单元格属性不管用, 使用 分列 的方式,可以实现将数值改为文本类型. 二. java处理 public class Com

  • Java POI实现将导入Excel文件的示例代码

    问题描述 现需要批量导入数据,数据以Excel形式导入. POI介绍 我选择使用的是apache POI.这是有Apache软件基金会开放的函数库,他会提供API给java,使其可以对office文件进行读写. 我这里只需要使用其中的Excel部分. 实现 首先,Excel有两种格式,一种是.xls(03版),另一种是.xlsx(07版).针对两种不同的表格格式,POI对应提供了两种接口.HSSFWorkbook和XSSFWorkbook 导入依赖 <dependency> <group

  • java poi导入纯数字等格式问题及解决

    目录 poi导入纯数字等问题 poi获取Cell内容:数字之格式化 原因 DecimalFormat poi导入纯数字等问题 用poi导出excel时候,如果单元格设置纯数字,输入的数据一旦过大就是自动显示成科学记数法,导致导入后的数据出错,解决方式,后台获取导出文件后,强制转换单元格属性,就能完美解决,也适用于其他单元格格式引起的数据导入异常 Cell cellCode = r.getCell(1); cellCode.setCellType(CellType.STRING);   info.

  • 在java poi导入Excel通用工具类示例详解

    前言 本文主要给大家介绍了关于java poi导入Excel通用工具类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 问题引入和分析 提示:如果不想看罗嗦的文章,可以直接到最后点击源码下载运行即可 最近在做一个导入Excel的功能,在做之前在百度上面查找"java通用导入Excel工具类",没有查到,大多数都是java通用导出Excel.后来仔细想想,导出可以利用java的反射,做成通用的,放进相应的实体成员变量中,导入为什么不可以呢?也是可以的,不过在做

  • Java poi导出Excel下载到客户端

    Java poi 导出Excel并下载到客户端,具体内容如下 Maven配置,包含了其他文件格式的依赖,就全贴出来了 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> <version>3.12</version> </dependency> <dependency> <gr

  • 实例讲解java的纯数字加密解密

    我们都知道,在用户添加信息时,一些比较敏感的信息,如身份证号,手机号,用户的登录密码等信息,是不能直接明文存进数据库的.今天我们就以一个具体的例子来说明一下纯数字的java加密解密技术. 一般我们从页面获取到用户添加的信息之后,进行加密然后存入到数据库.需要比对信息时,加密之后的用户信息我们看不懂,所以对应的我们就要用解密技术.其实软考中对加密解密技术进行了很全面的说明,这里我们就用一个比较简单的实例来说明一下. 我们可能会习惯在service层进行加密,这个没有太强制的要求.下面我们就具体来看

  • Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

    Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法 实现代码: import java.io.FileInputStream; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.POIXMLExc

  • 易语言将日期时间转换成纯数字格式的代码

    将时间转换到纯数字格式的代码 .版本 2 .程序集 窗口程序集1 .程序集变量 年, 文本型 .程序集变量 月, 文本型 .程序集变量 日, 文本型 .程序集变量 时, 文本型 .程序集变量 分, 文本型 .程序集变量 秒, 文本型 .子程序 获取时间 年 = 到文本 (取年份 (取现行时间 ())) .判断开始 (取月份 (取现行时间 ()) < 10) 月 = 到文本 ("0") + 到文本 (取月份 (取现行时间 ())) .默认 月 = 到文本 (取月份 (取现行时间 (

  • Java实现导入导出Excel文件的方法(poi,jxl)

    目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel直接上代码: 一,POI POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007.poi现在一直有更新.所以现在主流使用POI. xls: pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi

  • java 使用poi 导入Excel数据到数据库的步骤

    由于我个人电脑装的Excel是2016版本的,所以这地方我使用了XSSF 方式导入 . 1 先手要制定一个Excel 模板 把模板放入javaWeb工程的某一个目录下如图: 2 模板建好了后,先实现模板下载功能 下面是页面jsp代码在这里只贴出部分代码 <!-- excel 导入小模块窗口 --> <div id="importBox" class="" style="display: none;"> <form i

  • Java用POI导入导出Excel实例分析

    1.异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解决方法: 使用的poi的相关jar包一定版本一定要相同!!!!! 2.maven所使用jar包,没有使用maven的话,就用poi-3.9.jar和poi-ooxml-3.9.jar(这个主要是用于Excel2007以后的版本)两个jar包就行() <dependency> <groupId>org.apache.po

  • java poi读取excel操作示例(2个代码)

    项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 复制代码 代码如下: /* * 使用POI读取EXCEL文件 */import java.io.File;import java.io.FileInputStream;import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFCell;impor

随机推荐