未显示从 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()+"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;
                    }

最新更新