|
@@ -1186,10 +1186,19 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
|
|
|
|
cell := config[cellPosition.Column][cellPosition.Row]
|
|
|
val := cell.ShowValue
|
|
|
- isPercent := false
|
|
|
- if strings.Contains(val, "%") {
|
|
|
- isPercent = true
|
|
|
- val = strings.Trim(val, "%")
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if cell.ShowValue == "" {
|
|
|
+ _, err := strconv.ParseFloat(cell.Value, 64)
|
|
|
+ if err == nil {
|
|
|
+ val = cell.Value
|
|
|
+ cell.ShowValue = cell.Value
|
|
|
+ }
|
|
|
}
|
|
|
_, e := strconv.ParseFloat(val, 64)
|
|
|
if e != nil {
|
|
@@ -1216,19 +1225,45 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
|
err = fmt.Errorf("日期计算配置json解析失败失败: %s, Err:%s", config, err.Error())
|
|
|
return
|
|
|
}
|
|
|
+ hasPercent := false
|
|
|
+ if styleConf.Nt == "percent" {
|
|
|
+ hasPercent = true
|
|
|
+ }
|
|
|
if styleConf.Pn != 0 || styleConf.Nt != "" {
|
|
|
- val = changePointDecimalPlaces(val, styleConf.Pn, styleConf.Nt, isPercent)
|
|
|
- cell.ShowFormatValue = val
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if styleConf.Pn != 0 {
|
|
|
+ if styleConf.Decimal == nil {
|
|
|
+ styleConf.Decimal = new(int)
|
|
|
+ }
|
|
|
+ *styleConf.Decimal += styleConf.Pn
|
|
|
+ if *styleConf.Decimal < 0 {
|
|
|
+ *styleConf.Decimal = 0
|
|
|
+ }
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
|
+ styleConf.Pn = 0
|
|
|
+ } else if styleConf.Decimal != nil {
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
|
+ } else {
|
|
|
+ if hasPercent {
|
|
|
+ numDecimal, _ := decimal.NewFromString(cell.ShowValue)
|
|
|
+ tmpStr := numDecimal.Mul(decimal.NewFromInt(100)).String()
|
|
|
+ cell.ShowFormatValue = tmpStr + "%"
|
|
|
+ } else {
|
|
|
+ cell.ShowFormatValue = cell.ShowValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if styleConf.Decimal != nil {
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
|
} else {
|
|
|
cell.ShowFormatValue = cell.ShowValue
|
|
|
}
|
|
|
|
|
|
- if styleConf.GlObj != nil {
|
|
|
- styleConf.GlObj = nil
|
|
|
- tmpStyleConf, err := json.Marshal(styleConf)
|
|
|
- if err == nil {
|
|
|
- cell.ShowStyle = string(tmpStyleConf)
|
|
|
- }
|
|
|
+ styleConf.GlObj = nil
|
|
|
+ tmpStyleConf, err := json.Marshal(styleConf)
|
|
|
+ if err == nil {
|
|
|
+ cell.ShowStyle = string(tmpStyleConf)
|
|
|
}
|
|
|
config[cellPosition.Column][cellPosition.Row] = cell
|
|
|
}
|
|
@@ -1236,6 +1271,19 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func getDecimalLen(str string, isPercent bool) (decimalPlaces int) {
|
|
|
+ dotIndex := strings.Index(str, ".")
|
|
|
+ if dotIndex == -1 {
|
|
|
+ decimalPlaces = 0
|
|
|
+ } else {
|
|
|
+ decimalPlaces = len(str) - dotIndex - 1
|
|
|
+ }
|
|
|
+ if isPercent && decimalPlaces >= 1 {
|
|
|
+ decimalPlaces -= 1
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
func changePointDecimalPlaces(str string, changeNum int, numberType string, isPercent bool) (newStr string) {
|
|
|
newStr = str
|