将导入的 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 文件可以有很多列,但它还包含两个命名的 nameemail,我想将它们映射到 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 对象属性的主要内容,如果未能解决你的问题,请参考以下文章

easyexcel导入对象与表头不一致时

反射+自定义注解---实现Excel数据列属性和JavaBean属性的自动映射

如何在导入数据库期间合并两个 excel 列?

如何使用 JPA 和 Hibernate 将 MySQL JSON 列映射到 Java 实体属性

将 Excel 电子表格列导入 SQL Server 数据库

java实现导入动态excel