diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java index fab5a7c6..195efdcc 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java @@ -1,5 +1,6 @@ package com.alibaba.excel.read.listener; +import java.lang.reflect.Field; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Map; @@ -15,11 +16,8 @@ import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.excel.read.metadata.holder.ReadSheetHolder; import com.alibaba.excel.read.metadata.property.ExcelReadHeadProperty; import com.alibaba.excel.support.cglib.beans.BeanMap; -import com.alibaba.excel.util.BeanMapUtils; -import com.alibaba.excel.util.ClassUtils; -import com.alibaba.excel.util.ConverterUtils; -import com.alibaba.excel.util.DateUtils; -import com.alibaba.excel.util.MapUtils; +import com.alibaba.excel.support.util.ReflectionUtils; +import com.alibaba.excel.util.*; /** @@ -147,7 +145,12 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener org/springframework/asm/** org/springframework/cglib/** + org/springframework/util/* diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/TestAccessor.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/TestAccessor.java new file mode 100644 index 00000000..7b39bcc4 --- /dev/null +++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/TestAccessor.java @@ -0,0 +1,90 @@ +package com.alibaba.easyexcel.test.demo.read; + +import com.alibaba.easyexcel.test.util.TestFileUtil; +import com.alibaba.excel.EasyExcelFactory; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.metadata.CellExtra; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; + +import java.io.File; + +/** + * 测试使用 lombok 的 @Accessors(chain = true) 注解无法映射到对象对应属性的问题 + */ +public class TestAccessor { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + public void importToRegulation () { + + + String fileName = TestFileUtil.getPath() + "demo" + File.separator + "testAccessors.xlsx"; + + EasyExcelFactory + .read(fileName, User.class, new UserListener()) + .sheet().doRead(); + + + } + + + @Data + @Accessors(chain = true) + public static class User { + + @ExcelProperty(index = 0) + private String name; + @ExcelProperty(index = 1) + private Integer age; + + } + + + @Slf4j + public static class UserListener extends AnalysisEventListener { + + @Override + public void onException(Exception exception, AnalysisContext context) throws Exception { + super.onException(exception, context); + } + + /** + * 这个每一条数据解析都会来调用 + */ + @Override + public void invoke(User data, AnalysisContext context) { + + try { + log.info("解析到一条数据:{}", objectMapper.writeValueAsString(data)); + } catch (JsonProcessingException e) { + log.error("序列化成 json 失败: {}", e.getMessage()); + } + + } + + @Override + public void extra(CellExtra extra, AnalysisContext context) { + super.extra(extra, context); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } + + @Override + public boolean hasNext(AnalysisContext context) { + return super.hasNext(context); + } + + } + +} diff --git a/easyexcel-test/src/test/resources/demo/testAccessors.xlsx b/easyexcel-test/src/test/resources/demo/testAccessors.xlsx new file mode 100644 index 00000000..e4b3fdef Binary files /dev/null and b/easyexcel-test/src/test/resources/demo/testAccessors.xlsx differ diff --git a/pom.xml b/pom.xml index ab227234..fa381661 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,9 @@ com.alibaba easyexcel-support - 3.3.4 + + + ${revision}