我编写了一些代码,用于使用Apache poi从excel文件中读取数据。以下是相同的代码:
FileInputStream fis=new FileInputStream("D:\\Book1.xlsx");
XSSFWorkbook workbook=new XSSFWorkbook(fis);
XSSFSheet sheet=workbook.getSheetAt(0);
Iterator<Row> rowiterator=sheet.iterator();
while(rowiterator.hasNext()){
Row row=rowiterator.next();
Iterator<Cell> celliterator=row.cellIterator();
while(celliterator.hasNext()){
Cell cell=celliterator.next();
switch(cell.getCellType()){
case Cell.CELL_TYPE_BOOLEAN:
cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_STRING:
System.out.println("values========="+cell.getStringCellValue()+"\t\t");
empdata.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue()+"\t\t");
Double dblvalue= cell.getNumericCellValue();
int intval=dblvalue.intValue();
empdata.add(Integer.toString(intval));
break;
}
}
}
在上面的代码中,rowiterator显示行和 celliterator显示单元格值
以下是我的Excel文件结构Url:
http://img.viralpatel.net/2012/11/excel-file.png
但在这里,我没有得到价值观。仅打印Emp Id索引,表示第一行和第一列,第一个单元格打印在控制台上。 不打印剩余单元格。
请告诉我可行的方法。
答案 0 :(得分:2)
您在break;
声明中遗漏了case Cell.CELL_TYPE_STRING:
。尝试添加并执行,祝你好运!
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue()+"\t\t");
empdata.add(cell.getStringCellValue());
break;
编辑:复制以下内部循环播放,请评论您的内容
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue() + "\t");
// empdata.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue() + "\t");
Double dblvalue = cell.getNumericCellValue();
int intval = dblvalue.intValue();
// empdata.add(Integer.toString(intval));
break;
}