对于百分率导出,可以用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不少注解可以用,我也是看的源码找到上面的这个注解来用的:

时间紧张,结束!
1万+

被折叠的 条评论
为什么被折叠?



