Java 从Excel行填充POJO

Java 从Excel行填充POJO,java,apache-poi,cyclomatic-complexity,Java,Apache Poi,Cyclomatic Complexity,我正在使用ApachePOI读取一个包含许多列的Excel文件。我有一个POJO,其中Excel工作表中的每一列都有一个字段 如何使用Excel中的值填充POJO以实现最小圈复杂度 我实现了非常粗糙的方法,使用switch..case填充我的POJO,但这会导致紧密耦合,并导致高圈复杂度,下面给出了我的实现供参考(这是我觉得非常脏的实现): 调用的方法: /* * Populates pojo */ private MyData populateModel(M

我正在使用ApachePOI读取一个包含许多列的Excel文件。我有一个POJO,其中Excel工作表中的每一列都有一个字段

如何使用Excel中的值填充POJO以实现最小圈复杂度

我实现了非常粗糙的方法,使用
switch..case
填充我的POJO,但这会导致紧密耦合,并导致高圈复杂度,下面给出了我的实现供参考(这是我觉得非常脏的实现):

调用的方法:

    /*
     * Populates pojo
     */
    private MyData populateModel(MyData data, int columnIndex, Object cellValue) {
    switch (columnIndex) {
        case 0:
        data.setAccount((long) cellValue);
        break;
        case 1:
        data.setDocNumber((long) cellValue);
        break;
        case 2:
        data.setType((String) cellValue);
        break;
        // more cases for subsequent excel columns
        default:
        // do nothing
       }
    return data;
    }

查看数据解组。您还可以将excel文件转换为XML,并使用JAXB之类的工具将数据解组到POJO。如果您在excel中没有计算,请转换为CSV并使用Smooks[link]工具进行数据映射,其高性能和映射逻辑将可配置为什么不将整个
populateModel
交给您呢?然后,您可以使用获得具有适当列索引的适当的
单元格。您还可以将excel文件转换为XML,并使用JAXB之类的工具将数据解组到POJO。如果您在excel中没有计算,请转换为CSV并使用Smooks[link]工具进行数据映射,其高性能和映射逻辑将可配置为什么不将整个
populateModel
交给您呢?然后,您可以使用获得具有适当列索引的适当的
单元格
s。
    /*
     * Populates pojo
     */
    private MyData populateModel(MyData data, int columnIndex, Object cellValue) {
    switch (columnIndex) {
        case 0:
        data.setAccount((long) cellValue);
        break;
        case 1:
        data.setDocNumber((long) cellValue);
        break;
        case 2:
        data.setType((String) cellValue);
        break;
        // more cases for subsequent excel columns
        default:
        // do nothing
       }
    return data;
    }