From 26c529cd7b219d0c3f279fafabd4fabb20ad417a Mon Sep 17 00:00:00 2001 From: lixiaojun Date: Fri, 23 Feb 2024 13:47:55 +0800 Subject: [PATCH 1/4] =?UTF-8?q?excel=E5=AF=BC=E5=87=BA=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E5=AD=90=E8=A1=A8=E7=BB=93=E6=9E=84=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AD=90=E8=A1=A8=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/utils/poi/ExcelUtil.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index 68ccbf11c..2506422c7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -887,6 +887,39 @@ public class ExcelUtil styles.put(key, style); } } + + // 兼容子对象 + if(this.subFields != null && !this.subFields.isEmpty()){ + this.subFields.forEach(subField->{ + Excel annotation = subField.getAnnotation(Excel.class); + if(annotation != null){ + String key = StringUtils.format("data_{}_{}_{}", annotation.align(), annotation.color(), annotation.backgroundColor()); + if (!styles.containsKey(key)) + { + CellStyle style = wb.createCellStyle(); + style.setAlignment(annotation.align()); + style.setVerticalAlignment(VerticalAlignment.CENTER); + style.setBorderRight(BorderStyle.THIN); + style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderLeft(BorderStyle.THIN); + style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderTop(BorderStyle.THIN); + style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setBorderBottom(BorderStyle.THIN); + style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + style.setFillForegroundColor(annotation.backgroundColor().getIndex()); + Font dataFont = wb.createFont(); + dataFont.setFontName("Arial"); + dataFont.setFontHeightInPoints((short) 10); + dataFont.setColor(annotation.color().index); + style.setFont(dataFont); + styles.put(key, style); + } + } + }); + } + return styles; } -- Gitee From bbad7f60cf014e033f57067106a7cf18d0f21a5c Mon Sep 17 00:00:00 2001 From: lixiaojun Date: Fri, 23 Feb 2024 14:35:28 +0800 Subject: [PATCH 2/4] =?UTF-8?q?excel=E5=AF=BC=E5=87=BA=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=94=AF=E6=8C=81=E5=AD=90?= =?UTF-8?q?=E7=B1=BB=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/utils/poi/ExcelUtil.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index 2506422c7..e2ba0f905 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -1467,7 +1467,21 @@ public class ExcelUtil List tempFields = new ArrayList<>(); tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); - for (Field field : tempFields) + + // 修改获取注解字段,支持子类覆盖 + Map classFieldMap = new HashMap<>(); + for (Field field : clazz.getSuperclass().getDeclaredFields()) { + if (classFieldMap.put(field.getName(), field) != null) { + throw new IllegalStateException("Duplicate key"); + } + } + for (Field field : clazz.getDeclaredFields()) { + classFieldMap.put(field.getName(), field); + } + + Collection values = classFieldMap.values(); + + for (Field field : values) { if (!ArrayUtils.contains(this.excludeFields, field.getName())) { -- Gitee From 5e7385692a1ba6def896bcbc7fe1ccba0b5493bc Mon Sep 17 00:00:00 2001 From: lixiaojun Date: Thu, 14 Mar 2024 13:41:11 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E4=BF=9D=E6=8C=81=E5=AD=97=E6=AE=B5=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/utils/poi/ExcelUtil.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index e2ba0f905..bf79e83ad 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -12,16 +12,7 @@ import java.math.BigDecimal; import java.text.DecimalFormat; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.ArrayUtils; @@ -1469,7 +1460,7 @@ public class ExcelUtil tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); // 修改获取注解字段,支持子类覆盖 - Map classFieldMap = new HashMap<>(); + Map classFieldMap = new LinkedHashMap<>(); for (Field field : clazz.getSuperclass().getDeclaredFields()) { if (classFieldMap.put(field.getName(), field) != null) { throw new IllegalStateException("Duplicate key"); -- Gitee From d4bd27857a10af2d5219f98b88677993c203d546 Mon Sep 17 00:00:00 2001 From: lixiaojun Date: Thu, 14 Mar 2024 14:33:57 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java index bf79e83ad..6c046f6f0 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java @@ -1455,9 +1455,6 @@ public class ExcelUtil public List getFields() { List fields = new ArrayList(); - List tempFields = new ArrayList<>(); - tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); - tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); // 修改获取注解字段,支持子类覆盖 Map classFieldMap = new LinkedHashMap<>(); -- Gitee