ureport2 导出数字保留两位小数,百分比自动转换成数值类型

项目场景:

 实际业务需求导出的复杂表格,要求金额保留两位小数,百分比导出后,不在手动转换成数值类型。

解决方案:

在ureport2 源码中 ExcelBuilderDirect 类中,修改如下代码:

if (obj instanceof String) {
   //百分比转换数值类型,保留两位
   if (String.valueOf(obj).contains("%")) {
   		Double b = Double.parseDouble(String.valueOf(obj).replace("%", "")) * 0.01;                           style.setDataFormat(df.getFormat("0.00%"));
        cell.setCellStyle(style);
        cell.setCellValue(b);
        cell.setCellType(CellType.NUMERIC);
	} else {
       cell.setCellValue((String) obj);
       cell.setCellType(CellType.STRING);
     }
   } else if (obj instanceof Number) {
       //数值为整数,小数点保留两位
       if (obj instanceof BigDecimal) {
           Pattern pattern = Pattern.compile("[0-9]*");
           boolean matches = pattern.matcher(String.valueOf(obj)).matches();
           if (matches == true) {
               style.setDataFormat(df.getFormat("0_ "));
           } else {
               style.setDataFormat(df.getFormat("0.00_ "));
           }
       }
      cell.setCellStyle(style);
      BigDecimal bigDecimal = Utils.toBigDecimal(obj);
      cell.setCellValue(bigDecimal.doubleValue());
      cell.setCellType(CellType.NUMERIC);......

效果效如下:

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值