我正在阅读大约60列和500行的excel文件。我正在使用Apahce POI在我们的java对象表单中转换它们。但所有这些我用switch语句做它并根据列索引做出不同的情况。我不认为迭代excel并将其转换为java对象是正确的方法。所以你可以建议我这样做的好方法。
目前这样做......
public class Employee
{
private String empNo;
private String empName;
...
..
...
....like this 60 column header
...
}
我不喜欢这样做,有没有其他方式可以建议我。 提前感谢您的帮助 在另一堂课。
FileInputStream file = new FileInputStream(new File("C:\\test.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(file);
HSSFSheet sheet = workbook.getSheetAt(0);
List<Employee> list = new AraayList<Employee>();
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Employee e = new Employee();
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getColumnIndex()) {
case 0:
e.setEmpName(cell.getStringCellValue());
break;
case 1:
e.setEmpNo(cell.getNumericCellValue());
break;
.....
......
......
..
...
case 60: e.setStreet(cell.getStringCellValue());
list.add(e);
break;
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
如果你想要一个POJO,那么除了在POJO中传输setter代码之外我不认为有更好的方法。
public class Employee{
private String fieldA;
private String fieldB;
// ... 60 such fields
public getFieldA(){
return fieldA;
}
// ...60 such getters(and setters);
public void setField(int index,String value){
switch(index){
case 0:
fieldA=value;
// ...60 such cases
}
}
}
在驱动程序类中,您可以通过编写来使用它:
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()){
HSSFRow row = (HSSFRow) rowIterator.next();
Employee emp=new Employee();
for(int i=0;i<60;i++){
emp.setField(i,cell.row.getCell(i).getStringCellValue());
}
}