我想从Excel文件中读取数据,并希望将类似HashMap的内容存储到Java集合中。
我通过Apache POI实现了Excel阅读 - 这部分工作得非常好。 现在我想知道如何将这些数据存储到HashMap中。
我创建了1个包含Excel数据值的POJO类。
Class EmpXcel
private String emp_name;
private String emp_job;
// parameterised constructor
// getter-setter
现在如果我创建了这个特定POJO类的类型的HashMap。
对于前。 Map<String, EmpXcel> map = new HashMap<String, EmpXcel>();
这是我从Excel中读取数据的代码。
while(itr.hasNext()){
Row nextRow = itr.next();
// For each row, iterate through all the columns
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
switch (cell.getCellType())
{
// if cell is numeric format
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue()+",");
break;
// if cell is string format
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue() + ",");
break;
}
}
System.out.println();
}
我不确定如何将此数据存储到POJO类型的HashMap中(此处为EmpXcel)。
编辑:Excel表:
Emp_Name | Emp_Job
Travis | Technical Assistant
John | Professor
另外我想让它更通用 - 想为不同的Excel文件创建单个Java类(不管行/列的数量)
请与我分享您的一些见解,以便我可以按照这种方式进行。
感谢。
答案 0 :(得分:1)
回答你的上一条评论@inityk 通过使用getColumnIndex(),您可以访问所有单元格,然后可以验证其中的数据。
List<EmpXcel> empXcelList=new Arrayist<EmpXcel>();
while(itr.hasNext()){
Row nextRow = itr.next();
EmpXcel empXcelPOJO = new EmpXcel();
// For each row, iterate through all the columns
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getColumnIndex()==0)
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print("Name should not be numeric");
break;
// if cell is string format
case Cell.CELL_TYPE_STRING:
empXcelPOJO.setEmpName(cell.getStringCellValue())
break;
}elseif(cell.getColumnIndex()==1)
{
case Cell.CELL_TYPE_NUMERIC:
System.out.print("Name should not be numeric");
break;
// if cell is string format
case Cell.CELL_TYPE_STRING:
empXcelPOJO.setEmpJob(cell.getStringCellValue())
break;
}
}
empXcelList.add(empXcelPOJO);
}