Java POI读取excel中小数位数多了,丢失精度,自动补0的问题

话不多说直接上图,有两位小数,一位小数的,和只有整数的,我这列单元格格式是常规。

然后在Java里面读取的时候 1 --> 1.0

很好,为了解决问题,用网上的办法:

cell.setCellType(CellType.STRING); //读取前将单元格设置为文本类型读取

结果到1.09时,读取出来是这样的

1.09 --> 1.09000000000000001

然后肯定插入数据的时候会报错啥的

目前的解决办法:

一. 将excel单元格改为文本类型(我用的这种方法解决了问题)

注意,直接修改单元格属性不管用, 使用 分列 的方式,Excel分列不会的可以百度下,可以实现将数值改为文本类型。

二. java处理(暂时还没试过,先记录下来)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

public class CommonUtil {

 

  private static NumberFormat numberFormat = NumberFormat.getNumberInstance();

 

  static {

    numberFormat.setGroupingUsed(false);

  }

 

  public static String getCellValue(Cell cell) {

    if (null == cell) {

      return "";

    }

    Object value;

    switch (cell.getCellTypeEnum()) {

      // 省略

      case NUMERIC:

        double d = cell.getNumericCellValue(); 

        value = numberFormat.format(d);    // 关键在这里!

      //省略

    }

    return value == null ? "" : value.toString();

  }

}

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值