diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java index dd37b6795..f811cdd7e 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/CellMergeHandler.java @@ -73,12 +73,14 @@ public class CellMergeHandler { Object val = ReflectUtils.invokeGetter(rowObj, field.getName()); int colNum = mergeFieldsIndex.get(j); - if (!map.containsKey(field)) { + Object cellValue = map.containsKey(field) ? map.get(field).value() : null; + + if (!map.containsKey(field) || (isEmpty(cellValue) && val != null)) { map.put(field, new RepeatCell(val, i)); } else { RepeatCell repeatCell = map.get(field); - Object cellValue = repeatCell.value(); - if (cellValue == null || "".equals(cellValue)) { + cellValue = repeatCell.value(); + if (isEmpty(cellValue)) { // 空值跳过不合并 continue; } @@ -110,6 +112,10 @@ public class CellMergeHandler { return cellList; } + private boolean isEmpty(Object value) { + return value == null || "".equals(value); + } + private boolean isMerge(List list, int i, Field field) { boolean isMerge = true; CellMerge cm = field.getAnnotation(CellMerge.class);