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 7017f3adb8..c343bfef54 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 @@ -544,7 +544,8 @@ public class ChartDataServer implements ChartDataApi { cell.setCellValue(cellValObj.toString()); } } else { - if ((excelTypes[j].equals(DeTypeConstants.DE_INT) || excelTypes[j].equals(DeTypeConstants.DE_FLOAT)) && StringUtils.isNotEmpty(cellValObj.toString())) { + Integer excelType = getExcelType(j, excelTypes, exportFields, viewInfo); + if ((Objects.equals(excelType, DeTypeConstants.DE_INT) || Objects.equals(excelType, DeTypeConstants.DE_FLOAT)) && StringUtils.isNotEmpty(cellValObj.toString())) { cell.setCellValue(Double.valueOf(cellValObj.toString())); } else if (cellValObj != null) { cell.setCellValue(cellValObj.toString()); @@ -578,6 +579,15 @@ public class ChartDataServer implements ChartDataApi { } } + private static Integer getExcelType(int columnIndex, Integer[] excelTypes, List exportFields, ChartViewDTO viewInfo) { + if (viewInfo != null + && StringUtils.equalsAnyIgnoreCase(viewInfo.getType(), "table-info", "table-normal") + && columnIndex < exportFields.size()) { + return exportFields.get(columnIndex).getDeType(); + } + return ArrayUtils.isNotEmpty(excelTypes) && columnIndex < excelTypes.length ? excelTypes[columnIndex] : null; + } + public static List resolveExportFields(ChartViewDTO viewInfo, Object[] header) { List fields = new ArrayList<>(); if (viewInfo != null && viewInfo.getData() != null && viewInfo.getData().get("fields") != null) {