From 62e83eaef5e247777970ec971ce3fa2cc7e161f2 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 15 Jun 2025 15:22:19 +0800 Subject: [PATCH] =?UTF-8?q?Excel=E5=AF=BC=E5=87=BA=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E9=80=89=E6=8B=A9=E5=88=97=E9=94=99=E4=BD=8D?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9=20#853?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/handler/SelectSheetWriteHandler.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 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 0dac0c6c1..8e3e28eb4 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 @@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.excel.core.handler; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.poi.excel.ExcelUtil; @@ -61,15 +62,18 @@ public class SelectSheetWriteHandler implements SheetWriteHandler { int colIndex = 0; boolean ignoreUnannotated = head.isAnnotationPresent(ExcelIgnoreUnannotated.class); for (Field field : head.getDeclaredFields()) { - // 忽略 static final 或 transient 的字段 - if(isStaticFinalOrTransient(field) ) { + // 关联 https://github.com/YunaiV/ruoyi-vue-pro/pull/853 + // 1.1 忽略 static final 或 transient 的字段 + if (isStaticFinalOrTransient(field) ) { continue; } - // 忽略的字段跳过 - if((ignoreUnannotated && !field.isAnnotationPresent(ExcelProperty.class)) - || field.isAnnotationPresent(ExcelIgnore.class)){ + // 1.2 忽略的字段跳过 + if ((ignoreUnannotated && !field.isAnnotationPresent(ExcelProperty.class)) + || field.isAnnotationPresent(ExcelIgnore.class)) { continue; } + + // 2. 核心:处理有 ExcelColumnSelect 注解的字段 if (field.isAnnotationPresent(ExcelColumnSelect.class)) { ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class); if (excelProperty != null && excelProperty.index() != -1) { @@ -83,13 +87,14 @@ public class SelectSheetWriteHandler implements SheetWriteHandler { /** * 判断字段是否是静态的、最终的、 transient 的 - * EasyExcel 默认是忽略 static final 或 transient 的字段,所以需要判断 + * 原因:EasyExcel 默认是忽略 static final 或 transient 的字段,所以需要判断 + * * @param field 字段 - * @return 是否是静态的、最终的、 transient 的 + * @return 是否是静态的、最终的、transient 的 */ private boolean isStaticFinalOrTransient(Field field) { - return (Modifier.isStatic(field.getModifiers()) && Modifier.isFinal(field.getModifiers())) - || Modifier.isTransient(field.getModifiers()); + return (Modifier.isStatic(field.getModifiers()) && Modifier.isFinal(field.getModifiers())) + || Modifier.isTransient(field.getModifiers()); }