Skip to content

Commit f9fffd3

Browse files
committed
feat(excel): 添加行号注解并优化行号设置逻辑
- 优化 DefaultAnalysisEventListener 中的行号设置逻辑,使用 Spring 的 ReflectionUtils- 新增字段类型检查,确保行号字段为 Long 类型 - 在 IndexOrNameData3 类中添加 @ExcelLine 注解用于标记行号字段
1 parent c3a2f3f commit f9fffd3

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/main/java/com/pig4cloud/plugin/excel/handler/DefaultAnalysisEventListener.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
77
import jakarta.validation.ConstraintViolation;
88
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.util.ReflectionUtils;
910

10-
import java.lang.reflect.Field;
1111
import java.util.ArrayList;
1212
import java.util.List;
1313
import java.util.Set;
@@ -41,18 +41,16 @@ public void invoke(Object o, AnalysisContext analysisContext) {
4141
errorMessageList.add(new ErrorMessage(lineNum, messageSet));
4242
}
4343
else {
44-
Field[] fields = o.getClass().getDeclaredFields();
45-
for (Field field : fields) {
44+
// 获取所有的字段
45+
ReflectionUtils.doWithFields(o.getClass(), field -> {
46+
// 如果字段上有 @ExcelLine 注解,并且类型为 Long,则设置行号
4647
if (field.isAnnotationPresent(ExcelLine.class) && field.getType() == Long.class) {
47-
try {
48-
field.setAccessible(true);
49-
field.set(o, lineNum);
50-
}
51-
catch (IllegalAccessException e) {
52-
e.printStackTrace();
53-
}
48+
// 设置字段可访问
49+
ReflectionUtils.makeAccessible(field);
50+
// 设置字段值
51+
field.set(o, lineNum);
5452
}
55-
}
53+
});
5654
list.add(o);
5755
}
5856
}

src/test/java/com/pig4cloud/plugin/excel/enums/IndexOrNameData3.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.idev.excel.annotation.ExcelProperty;
44
import com.pig4cloud.plugin.excel.annotation.DictTypeProperty;
5+
import com.pig4cloud.plugin.excel.annotation.ExcelLine;
56
import lombok.Data;
67

78
/**
@@ -19,5 +20,6 @@ public class IndexOrNameData3 {
1920
@ExcelProperty(value = "列1")
2021
@DictTypeProperty("sex_txype")
2122
private String sex;
22-
23+
@ExcelLine
24+
private Long lineNum;
2325
}

0 commit comments

Comments
 (0)