将导入的 Excel 列映射到 Java 对象属性
Posted
技术标签:
【中文标题】将导入的 Excel 列映射到 Java 对象属性【英文标题】:Map imported Excel columns to Java object attributes 【发布时间】:2021-06-18 22:41:36 【问题描述】:我有一个解析 Excel 文件的小型 Java 应用程序(使用 Apache POI 库)。 现在我想将列值映射到 Java 对象,我正在寻找执行此任务的最佳解决方案或模式。
例如,Java 对象是 Customer,具有两个属性 - name 和 email:
public class Customer
private String name;
private String email;
... constructor, getters, setters
Excel 文件可以有很多列,但它还包含两个命名的 name 和 email,我想将它们映射到 Java 中的 Customer 对象的属性。
例如:
Excel 文件customers.xls
Preview of data from customers.xls
我遍历单元格并知道我的 Customer 对象的列索引是 0 和 2。我迭代每一行,如果单元格索引为 0,我将其值分配给名称,如果 2,我将其分配给电子邮件,但它是真的是硬编码,我认为必须有更简单的解决方案或某种模式。
我可以将 Customer 属性放入 Enum,然后将它们与 Excel 列名进行比较,并在某些数据结构中映射它们的顺序,以便如果我更新 Customer 对象,我可以轻松地添加另一个 Enum 值,而无需在解析逻辑中硬编码属性名称?
【问题讨论】:
【参考方案1】:我找到了完全符合我要求的小项目:
ExcelToObjectMapping-Java
在对上面的源代码进行小幅修改后,我设法导入了我的 excel 文件并将它们映射到我的 Java 实体。
【讨论】:
以上是关于将导入的 Excel 列映射到 Java 对象属性的主要内容,如果未能解决你的问题,请参考以下文章
反射+自定义注解---实现Excel数据列属性和JavaBean属性的自动映射
如何使用 JPA 和 Hibernate 将 MySQL JSON 列映射到 Java 实体属性