From c59fab4dc89e4dda470b350736c3556ff8373bb4 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 27 Dec 2024 17:43:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dv2=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E8=B4=9F=E6=95=B0=E9=85=8D=E7=BD=AE=E5=8D=83=E5=88=86?= =?UTF-8?q?=E4=BD=8D=E6=97=B6=EF=BC=8C=E5=AF=BC=E5=87=BA=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20#14161?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/server/ChartDataServer.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index 94a6c9753d..6dc0dfaf7c 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -51,6 +51,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -184,9 +186,10 @@ public class ChartDataServer implements ChartDataApi { StringBuilder sb = new StringBuilder(value); if (formatter.getThousandSeparator()) { - String[] parts = value.split("\\."); - parts[0] = addThousandSeparators(parts[0]); - sb = new StringBuilder(String.join(".", parts)); + Pattern thousandsPattern = Pattern.compile("(\\d)(?=(\\d{3})+$)"); + String[] numArr = value.split("\\."); + numArr[0] = addThousandSeparator(numArr[0], thousandsPattern); + sb = new StringBuilder(String.join(".", numArr)); } if (formatter.getType().equals("percent")) { sb.append('%'); @@ -215,20 +218,15 @@ public class ChartDataServer implements ChartDataApi { return sb.toString(); } - private static String addThousandSeparators(String number) { - StringBuilder sb = new StringBuilder(); - int len = number.length(); - int count = 0; - for (int i = len - 1; i >= 0; i--) { - sb.append(number.charAt(i)); - count++; - if (count == 3 && i != 0) { - sb.append(','); - count = 0; - } - } - return sb.reverse().toString(); + private static String addThousandSeparator(String numStr, Pattern pattern) { + Matcher matcher = pattern.matcher(numStr); + StringBuffer sb = new StringBuffer(); + while (matcher.find()) { + matcher.appendReplacement(sb, matcher.group(1) + ","); + } + matcher.appendTail(sb); + return sb.toString(); } @@ -408,11 +406,7 @@ public class ChartDataServer implements ChartDataApi { detailsSheet.setColumnWidth(j, 255 * 20); } else if (cellValObj != null) { try { - if ((excelTypes[j].equals(DeTypeConstants.DE_INT) || excelTypes[j].equals(DeTypeConstants.DE_FLOAT)) && StringUtils.isNotEmpty(cellValObj.toString())) { - cell.setCellValue(Double.valueOf(cellValObj.toString())); - } else if (cellValObj != null) { - cell.setCellValue(cellValObj.toString()); - } + cell.setCellValue(cellValObj.toString()); } catch (Exception e) { LogUtil.warn("export excel data transform error"); }