easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

* 修复子类@ExcelIgnore未生效 [Issue #2764](https://github.com/alibaba/easyexcel/issues/2764)

Open jasond1016 opened this issue 2 years ago • 5 comments

fix #2764

当子类存在与父类相同名字成员变量时, 如果父类注解为ExcelProperty,子类注解为ExcelIgnore,结果仍然会输出该列。

由于库中解析成员变量的顺序是从先子类后父类, 所以ignoreMap中如果存在成员变量名,即表明子类已注解为ExcelIgnore,可以忽略该列。

jasond1016 avatar Nov 17 '22 11:11 jasond1016

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Nov 17 '22 11:11 CLAassistant

这个需要补充下测试案例

zhuangjiaju avatar Feb 10 '23 10:02 zhuangjiaju

补充测试案例时发现个问题,想确认下我们的期望行为。

前提是子类和父类拥有同名属性

子类注解 父类注解 期望行为
ExcelIgnore ExcelProperty 忽略该项目
ExcelIgnore ExcelIgnore 忽略该项目
ExcelProperty ExcelProperty 同时包含父类和子类?还是只包含子类该项目?
ExcelProperty ExcelIgnore 包含该项目

jasond1016 avatar Feb 17 '23 11:02 jasond1016

重新改了代码,添加 excelPropertyFieldMap 记录所有已经解析为 Excel 列的属性。 如果发现重复,即表明父类拥有和子类同名属性,可以忽略该父类属性。

已补充以下测试案例: 前提是子类和父类拥有同名属性

子类注解 父类注解 期望行为
ExcelIgnore ExcelProperty 忽略该项目
ExcelIgnore ExcelIgnore 忽略该项目
ExcelProperty ExcelProperty 只包含子类该项目
ExcelProperty ExcelIgnore 只包含子类该项目

jasond1016 avatar Oct 08 '23 07:10 jasond1016

@zhuangjiaju 测试用例补上了

jasond1016 avatar Dec 08 '23 02:12 jasond1016