From da146c2a708387059d4e31cbe1db0fdd8ceb41e3 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Wed, 19 Aug 2020 11:20:31 +0800
Subject: [PATCH] Excel注解支持设置BigDecimal精度&舍入规则
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 2d6ed8c..d5a23b1 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -200,7 +200,10 @@
// 设置类的私有字段属性可访问.
field.setAccessible(true);
Integer column = cellMap.get(attr.name());
- fieldsMap.put(column, field);
+ if (column != null)
+ {
+ fieldsMap.put(column, field);
+ }
}
}
for (int i = 1; i < rows; i++)
@@ -474,7 +477,7 @@
{
if (ColumnType.STRING == attr.cellType())
{
- cell.setCellType(CellType.NUMERIC);
+ cell.setCellType(CellType.STRING);
cell.setCellValue(StringUtils.isNull(value) ? attr.defaultValue() : value + attr.suffix());
}
else if (ColumnType.NUMERIC == attr.cellType())
@@ -544,9 +547,13 @@
{
cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
}
- else if (StringUtils.isNotEmpty(dictType))
+ else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value))
{
cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
+ }
+ else if (value instanceof BigDecimal && -1 != attr.scale())
+ {
+ cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
}
else
{
@@ -692,7 +699,7 @@
}
return StringUtils.stripEnd(propertyString.toString(), separator);
}
-
+
/**
* 解析字典值
*
@@ -896,7 +903,7 @@
{
if ((Double) val % 1 > 0)
{
- val = new DecimalFormat("0.00").format(val);
+ val = new BigDecimal(val.toString());
}
else
{
--
Gitblit v1.9.2