修改导出excel时,BigDecimal字段可以导出数字类型
目前只能导出string类型,导致在excel中会有个黄点提示“以文本形式存储的数字”,从而不能运行求和等操作,要批量修改还挺麻烦的。 修改后可以增加`cellType = ColumnType.NUMERIC`后会导出数字类型,会自动获取`scale`的值作为小数点保留值。
This commit is contained in:
parent
cbae45c7ce
commit
7780be89fe
@ -837,7 +837,25 @@ public class ExcelUtil<T>
|
||||
}
|
||||
else if (value instanceof BigDecimal && -1 != attr.scale())
|
||||
{
|
||||
cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
|
||||
String valueStr = (((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString();
|
||||
//增加如果设置cellType是数值格式,则设置自定义小数点的格式
|
||||
if (Excel.ColumnType.NUMERIC == attr.cellType()) {
|
||||
//需要新建个样式,直接从styles.get("data")会被后续的覆盖掉
|
||||
CellStyle cellStyle = wb.createCellStyle();
|
||||
cellStyle.cloneStyleFrom(styles.get("data"));
|
||||
DataFormat df = wb.createDataFormat();//此处设置数据格式
|
||||
String precision = "0." + StringUtils.leftPad("", attr.scale(), "0");
|
||||
cellStyle.setDataFormat(df.getFormat(precision));
|
||||
cell.setCellStyle(cellStyle);
|
||||
cell.setCellValue(Double.parseDouble(valueStr));
|
||||
} else {
|
||||
//否则还是字符串导出
|
||||
cell.setCellValue(valueStr);
|
||||
}
|
||||
} else {
|
||||
// 设置列类型
|
||||
setCellVo(value, attr, cell);
|
||||
}
|
||||
}
|
||||
else if (!attr.handler().equals(ExcelHandlerAdapter.class))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user