From fa99e9658b6e74ddb1129805b68b2758f5469f0b Mon Sep 17 00:00:00 2001 From: dadiyang Date: Tue, 22 Sep 2026 01:55:00 +0800 Subject: [PATCH] fix(excel):导入模板下拉框对空字典/空选项源整列跳过数据验证——不再拼出 $F$1:$F$0 非法区间致 POI FormulaParseException 500(A43,框架层单点修复惠及所有模板) --- yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/handler/SelectSheetWriteHandler.java | 5 +++++ 1 file changed, 5 insertions(+), 0 deletions(-) diff --git a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/handler/SelectSheetWriteHandler.java b/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/handler/SelectSheetWriteHandler.java index c55e121..70a9cd2 100644 --- a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/handler/SelectSheetWriteHandler.java +++ b/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/handler/SelectSheetWriteHandler.java @@ -133,6 +133,11 @@ public class SelectSheetWriteHandler implements SheetWriteHandler { DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper(); // 需要设置下拉框的 sheet 页的数据验证助手 Workbook workbook = writeWorkbookHolder.getWorkbook(); // 获得工作簿 List>> keyValues = convertList(selectMap.entrySet(), entry -> new KeyValue<>(entry.getKey(), entry.getValue())); + // 空字典/空选项源:跳过该列下拉,避免拼出 $F$1:$F$0 非法区间致 POI FormulaParseException(该列退化为普通文本列) + keyValues.removeIf(item -> CollUtil.isEmpty(item.getValue())); + if (CollUtil.isEmpty(keyValues)) { + return; // 全部为空时连「字典sheet」都不创建 + } keyValues.sort(Comparator.comparing(item -> item.getValue().size())); // 升序不然创建下拉会报错 // 2. 创建数据字典的 sheet 页 -- libgit2 0.21.4