From 4bca189ff29c630db575c5bfc0b0444855dafe7f Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Mon, 1 Jun 2026 16:07:46 +0800 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8D=E7=A7=91=E5=AD=A6=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CoDelExcelTXServiceImpl.java | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java index 38d65f9c..b94076b2 100644 --- a/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelExcelTXServiceImpl.java @@ -677,25 +677,39 @@ public class CoDelExcelTXServiceImpl implements CoDelExcelTXService { case STRING: return cell.getStringCellValue(); case NUMERIC: - if (DateUtil.isCellDateFormatted(cell)) { - return new java.text.SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue()); - } - // 避免科学计数法 - BigDecimal bd = new BigDecimal(String.valueOf(cell.getNumericCellValue())); - return bd.stripTrailingZeros().toPlainString(); + return formatNumericCellValue(cell); case BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); case FORMULA: try { - return String.valueOf(cell.getNumericCellValue()); + CellType cachedType = cell.getCachedFormulaResultType(); + if (cachedType == CellType.STRING) { + return cell.getStringCellValue(); + } + if (cachedType == CellType.BOOLEAN) { + return String.valueOf(cell.getBooleanCellValue()); + } + if (cachedType == CellType.NUMERIC) { + return formatNumericCellValue(cell); + } + return ""; } catch (Exception e) { - return cell.getStringCellValue(); + return ""; } default: return ""; } } + private String formatNumericCellValue(Cell cell) { + if (DateUtil.isCellDateFormatted(cell)) { + return new java.text.SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue()); + } + // 避免科学计数法 + BigDecimal bd = new BigDecimal(String.valueOf(cell.getNumericCellValue())); + return bd.stripTrailingZeros().toPlainString(); + } + /** * TX导入表头严格校验: * 1. 固定列必须全部存在