【问题标题】:Reading Data From xlsx(Excel) File Data Is Not Showing从 xlsx(Excel) 文件数据读取数据未显示
【发布时间】:2014-01-15 17:03:09
【问题描述】:

我已经编写了一些代码,用于使用 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 索引被打印,意味着第一行和第一列以及第一个单元格被打印在控制台上。 不打印剩余的单元格。

请建议我可能的方式。

【问题讨论】:

    标签: java excel apache-poi read-write


    【解决方案1】:

    您在case Cell.CELL_TYPE_STRING: 语句中缺少break;。尝试添加并执行,祝你好运!

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

    【讨论】:

    • 我正在添加中断,但我忘记编辑了,甚至也不工作
    • 我根据您正在使用的类似创建的 Excel 表,使用我正在使用的确切内部 while 循环更新了答案。如果您引用了正确的工作表,它应该可以工作!
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多