我已经编写了一些代码,用于使用 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()+"tt");
empdata.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue()+"tt");
Double dblvalue= cell.getNumericCellValue();
int intval=dblvalue.intValue();
empdata.add(Integer.toString(intval));
break;
}
}
}
在上面的代码中,rowiterator 显示行和别名器显示单元格值
以下是我的 Excel 文件结构 URL:
http://img.viralpatel.net/2012/11/excel-file.png
但在这里我没有得到价值观。仅打印 Emp Id 索引,表示在控制台上打印第一行、第一列和第一个单元格。不打印剩余单元格。
请向我建议可能的方式。
语句中缺少case Cell.CELL_TYPE_STRING:
break;
。尝试添加并执行,祝你好运!
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue()+"tt");
empdata.add(cell.getStringCellValue());
break;
编辑:复制以下内部 while 循环,请评论您得到的内容
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;
}