From 3de561471560c8fc5855d689e8a5a5f75a8a6164 Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Mon, 13 Jul 2026 15:18:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(excel):=20=E5=AD=97=E5=85=B8/=E8=A1=A8?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=88=86=E9=9A=94=E7=AC=A6=E4=BB=8E=20=5F=20?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=20,=20=E8=A7=A3=E5=86=B3=E5=90=AB=E4=B8=8B?= =?UTF-8?q?=E5=88=92=E7=BA=BF=E5=80=BC=E8=A2=AB=E6=88=AA=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ExcelAnnotationUtils split 分隔符由 _ 改为 , - AutoPoiDictConfig 去掉 --- escape 机制,改用 , 分隔 - 修复 username 等含下划线字段在 Excel 导入导出时被错误转换 Co-Authored-By: Claude Opus 4.7 --- .../java/org/jeecg/config/AutoPoiDictConfig.java | 12 ++---------- .../java/org/jeecg/common/util/excel/DictQuery.java | 2 +- .../common/util/excel/ExcelAnnotationUtils.java | 6 +++--- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java index 93f571c..c68664e 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java @@ -27,8 +27,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Service public class AutoPoiDictConfig implements AutoPoiDictServiceI { - final static String EXCEL_SPLIT_TAG = "_"; - final static String TEMP_EXCEL_SPLIT_TAG = "---"; + final static String EXCEL_SPLIT_TAG = ","; @Lazy @Resource @@ -62,14 +61,7 @@ public class AutoPoiDictConfig implements AutoPoiDictServiceI { //update-begin---author:liusq Date:20230517 for:[issues/4917]excel 导出异常--- if(t!=null && t.getText()!=null && t.getValue()!=null){ //update-end---author:liusq Date:20230517 for:[issues/4917]excel 导出异常--- - //update-begin---author:scott Date:20211220 for:[issues/I4MBB3]@Excel dicText字段的值有下划线时,导入功能不能正确解析--- - if(t.getValue().contains(EXCEL_SPLIT_TAG)){ - String val = t.getValue().replace(EXCEL_SPLIT_TAG,TEMP_EXCEL_SPLIT_TAG); - dictReplaces.add(t.getText() + EXCEL_SPLIT_TAG + val); - }else{ - dictReplaces.add(t.getText() + EXCEL_SPLIT_TAG + t.getValue()); - } - //update-end---author:20211220 Date:20211220 for:[issues/I4MBB3]@Excel dicText字段的值有下划线时,导入功能不能正确解析--- + dictReplaces.add(t.getText() + EXCEL_SPLIT_TAG + t.getValue()); } } if (dictReplaces != null && dictReplaces.size() != 0) { diff --git a/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/DictQuery.java b/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/DictQuery.java index 916c36d..bdb2ee3 100644 --- a/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/DictQuery.java +++ b/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/DictQuery.java @@ -13,7 +13,7 @@ public interface DictQuery { * @param dictTable 字典表名(来自 @ExcelColumn.dictTable()) * @param dicCode 字典编码字段(来自 @ExcelColumn.dicCode()) * @param dicText 字典文本字段(来自 @ExcelColumn.dicText()) - * @return 格式为 {"text_code", ...} 的数组,如 {"男_0", "女_1"};无结果返回 null 或空数组 + * @return 格式为 {"text,code", ...} 的数组,如 {"男,0", "女,1"};无结果返回 null 或空数组 */ String[] query(String dictTable, String dicCode, String dicText); } diff --git a/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/ExcelAnnotationUtils.java b/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/ExcelAnnotationUtils.java index f346b5f..16ec9fd 100644 --- a/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/ExcelAnnotationUtils.java +++ b/jeecg-boot-module/jeecg-module-tools/src/main/java/org/jeecg/common/util/excel/ExcelAnnotationUtils.java @@ -215,7 +215,7 @@ public final class ExcelAnnotationUtils { static boolean isValidDictDisplay(String[] replace, String value) { for (String s : replace) { - String[] arr = s.split("_"); + String[] arr = s.split(","); if (arr.length >= 2 && arr[0].equals(value)) { return true; } @@ -359,7 +359,7 @@ public final class ExcelAnnotationUtils { private static String replaceValue(String[] replace, String value) { for (String s : replace) { - String[] arr = s.split("_"); + String[] arr = s.split(","); if (arr.length == 2 && value.equals(arr[1])) { return arr[0]; } @@ -398,7 +398,7 @@ public final class ExcelAnnotationUtils { return; } for (String s : replace) { - String[] arr = s.split("_"); + String[] arr = s.split(","); if (arr.length >= 2) { displayToCode.put(arr[0], arr[1]); }