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

时间:2013-12-28 06:59:47

标签: java excel apache-poi read-write

我编写了一些代码,用于使用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索引,表示第一行和第一列,第一个单元格打印在控制台上。 不打印剩余单元格。

请告诉我可行的方法。

1 个答案:

答案 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;
                    }