EasyExcel导出保留2位小数

        对于百分率导出,可以用SQL解决,生成为保留2位数的字符串,但是这样导出后单元格格式就变为了文本,不理想。

        更为理想的解决方法:利用EasyExcel的注解@ContentStyle,具体如下:

    /**
     * 完成率
     */
    @ExcelProperty(value = "完成率", index = 1)
    @ContentStyle(dataFormat = 2)
    private Double completeRate;

    ......

        这个注解的dataFormat就是设置格式的,他的值是BuiltinFormats类中BUILTIN_FORMATS_XX数组中对应格式的下标,源码如下:

public class BuiltinFormats {
    private static final String[] BUILTIN_FORMATS_CN = new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"¥\"#,##0_);(\"¥\"#,##0)", "\"¥\"#,##0_);[Red](\"¥\"#,##0)", "\"¥\"#,##0.00_);(\"¥\"#,##0.00)", "\"¥\"#,##0.00_);[Red](\"¥\"#,##0.00)", "0%", "0.00%", "0.00E+00", "# ?/?", "# ??/??", "yyyy/m/d", "d-mmm-yy", "d-mmm", "mmm-yy", "h:mm AM/PM", "h:mm:ss AM/PM", "h:mm", "h:mm:ss", "yyyy-m-d h:mm", null, null, null, null, "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "m\"月\"d\"日\"", "m-d-yy", "yyyy\"年\"m\"月\"d\"日\"", "h\"时\"mm\"分\"", "h\"时\"mm\"分\"ss\"秒\"", "上午/下午h\"时\"mm\"分\"", "上午/下午h\"时\"mm\"分\"ss\"秒\"", "yyyy\"年\"m\"月\"", "#,##0_);(#,##0)", "#,##0_);[Red](#,##0)", "#,##0.00_);(#,##0.00)", "#,##0.00_);[Red](#,##0.00)", "_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)", "_(\"¥\"* #,##0_);_(\"¥\"* (#,##0);_(\"¥\"* \"-\"_);_(@_)", "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)", "_(\"¥\"* #,##0.00_);_(\"¥\"* (#,##0.00);_(\"¥\"* \"-\"??_);_(@_)", "mm:ss", "[h]:mm:ss", "mm:ss.0", "##0.0E+0", "@", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "m\"月\"d\"日\"", "上午/下午h\"时\"mm\"分\"", "上午/下午h\"时\"mm\"分\"ss\"秒\"", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "t0", "t0.00", "t#,##0", "t#,##0.00", null, null, null, null, "t0%", "t0.00%", "t# ?/?", "t# ??/??", "ว/ด/ปปปป", "ว-ดดด-ปป", "ว-ดดด", "ดดด-ปป", "ช:นน", "ช:นน:ทท", "ว/ด/ปปปป ช:นน", "นน:ทท", "[ช]:นน:ทท", "นน:ทท.0", "d/m/bb"};
    private static final String[] BUILTIN_FORMATS_US = new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"$\"#,##0_);(\"$\"#,##0)", "\"$\"#,##0_);[Red](\"$\"#,##0)", "\"$\"#,##0.00_);(\"$\"#,##0.00)", "\"$\"#,##0.00_);[Red](\"$\"#,##0.00)", "0%", "0.00%", "0.00E+00", "# ?/?", "# ??/??", "yyyy/m/d", "d-mmm-yy", "d-mmm", "mmm-yy", "h:mm AM/PM", "h:mm:ss AM/PM", "h:mm", "h:mm:ss", "yyyy-m-d h:mm", null, null, null, null, "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "m\"月\"d\"日\"", "m-d-yy", "yyyy\"年\"m\"月\"d\"日\"", "h\"时\"mm\"分\"", "h\"时\"mm\"分\"ss\"秒\"", "上午/下午h\"时\"mm\"分\"", "上午/下午h\"时\"mm\"分\"ss\"秒\"", "yyyy\"年\"m\"月\"", "#,##0_);(#,##0)", "#,##0_);[Red](#,##0)", "#,##0.00_);(#,##0.00)", "#,##0.00_);[Red](#,##0.00)", "_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)", "_(\"$\"* #,##0_);_(\"$\"* (#,##0);_(\"$\"* \"-\"_);_(@_)", "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)", "_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)", "mm:ss", "[h]:mm:ss", "mm:ss.0", "##0.0E+0", "@", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "m\"月\"d\"日\"", "上午/下午h\"时\"mm\"分\"", "上午/下午h\"时\"mm\"分\"ss\"秒\"", "yyyy\"年\"m\"月\"", "m\"月\"d\"日\"", "t0", "t0.00", "t#,##0", "t#,##0.00", null, null, null, null, "t0%", "t0.00%", "t# ?/?", "t# ??/??", "ว/ด/ปปปป", "ว-ดดด-ปป", "ว-ดดด", "ดดด-ปป", "ช:นน", "ช:นน:ทท", "ว/ด/ปปปป ช:นน", "นน:ทท", "[ช]:นน:ทท", "นน:ทท.0", "d/m/bb"};

    public BuiltinFormats() {
    }

    public static String getBuiltinFormat(Integer index, String defaultFormat, Locale locale) {
        String[] builtinFormat = switchBuiltinFormats(locale);
        return index != null && index >= 0 && index < builtinFormat.length ? builtinFormat[index] : defaultFormat;
    }

    private static String[] switchBuiltinFormats(Locale locale) {
        return locale != null && Locale.US.getCountry().equals(locale.getCountry()) ? BUILTIN_FORMATS_US : BUILTIN_FORMATS_CN;
    }
}

        我需要保留2位小数就选0.00,对应下标2。

        这个注解有不少属性,感觉用处蛮大,这次没时间,下次试试其他属性。

        EasyExcel不少注解可以用,我也是看的源码找到上面的这个注解来用的:

         时间紧张,结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值