Java 从Excel行填充POJO
我正在使用ApachePOI读取一个包含许多列的Excel文件。我有一个POJO,其中Excel工作表中的每一列都有一个字段 如何使用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
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;
}