Commit fa99e9658b6e74ddb1129805b68b2758f5469f0b
1 parent
8e43004c
fix(excel):导入模板下拉框对空字典/空选项源整列跳过数据验证——不再拼出 $F$1:$F$0 非法区间致 POI FormulaParseExcept…
…ion 500(A43,框架层单点修复惠及所有模板)
Showing
1 changed file
with
5 additions
and
0 deletions
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 { |
| 133 | 133 | DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper(); // 需要设置下拉框的 sheet 页的数据验证助手 |
| 134 | 134 | Workbook workbook = writeWorkbookHolder.getWorkbook(); // 获得工作簿 |
| 135 | 135 | List<KeyValue<Integer, List<String>>> keyValues = convertList(selectMap.entrySet(), entry -> new KeyValue<>(entry.getKey(), entry.getValue())); |
| 136 | + // 空字典/空选项源:跳过该列下拉,避免拼出 $F$1:$F$0 非法区间致 POI FormulaParseException(该列退化为普通文本列) | |
| 137 | + keyValues.removeIf(item -> CollUtil.isEmpty(item.getValue())); | |
| 138 | + if (CollUtil.isEmpty(keyValues)) { | |
| 139 | + return; // 全部为空时连「字典sheet」都不创建 | |
| 140 | + } | |
| 136 | 141 | keyValues.sort(Comparator.comparing(item -> item.getValue().size())); // 升序不然创建下拉会报错 |
| 137 | 142 | |
| 138 | 143 | // 2. 创建数据字典的 sheet 页 | ... | ... |