@ExcelIgnoreUnannotated
是 EasyExcel 框架中的一个注解,用于控制 Excel 导入/导出时对实体类字段的处理方式。它的作用如下:
核心功能
忽略未标注 @ExcelProperty
的字段
-
当添加
@ExcelIgnoreUnannotated
到类上时,EasyExcel 会 跳过所有未显式标注@ExcelProperty
的字段,仅处理被@ExcelProperty
明确标记的字段。 -
如果没有此注解,EasyExcel 默认会尝试处理实体类中的所有字段(包括未标注的字段)。
使用场景
-
精确控制导出的字段
只导出标记了@ExcelProperty
的字段,忽略其他字段(即使它们是public
或有无参 getter 方法)。 -
避免意外数据泄露
防止因未显式忽略敏感字段而导致数据被意外导出。 -
提升性能
减少反射扫描的字段数量,加快导入/导出速度。
代码示例
@ExcelIgnoreUnannotated // 仅处理带 @ExcelProperty 的字段
public class User {@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;private String password; // 不会被导出/导入
}
对比默认行为
行为 | 无 @ExcelIgnoreUnannotated | 有 @ExcelIgnoreUnannotated |
---|---|---|
未标注 @ExcelProperty 的字段 | 会被处理(默认按字段名匹配 Excel 列) | 被忽略 |
需要导出的字段 | 必须显式标注 @ExcelIgnore 来忽略 | 只需标注 @ExcelProperty 明确指定 |
注意事项
-
与
@ExcelProperty
配合使用
如果类上添加了@ExcelIgnoreUnannotated
,则必须通过@ExcelProperty
明确指定需要处理的字段,否则这些字段会被完全忽略。 -
优先级高于其他注解
即使字段有其他注解(如@ColumnWidth
),只要没有@ExcelProperty
,依然会被忽略。 -
适用于复杂对象
对于嵌套对象,该注解仅作用于当前类的字段,不会影响嵌套类自身的注解规则。
常见问题
Q:如果忘记加 @ExcelProperty
会怎样?
A:字段会被完全忽略,可能导致导出数据缺失或导入时字段为 null
。
Q:如何导出所有字段(恢复默认行为)?
A:直接移除 @ExcelIgnoreUnannotated
注解即可。
通过使用 @ExcelIgnoreUnannotated
,可以更严格地控制 Excel 导入/导出的字段范围,避免因遗漏注解而导致的数据问题。