使用 POI 从 Excel 工作表中的下一行获取值

Posted

技术标签:

【中文标题】使用 POI 从 Excel 工作表中的下一行获取值【英文标题】:Get value from next row in Excel sheet with POI 【发布时间】:2015-04-09 13:09:49 【问题描述】:

我正在使用 Apache POI 读取 Excel 文档。如果当前为空,我想从下一行获取单元格值。例如,从第一行获取所有非空单元格值,对于空单元格:移动到下一行并获取值。 这是我用来读取 Excel 文档的代码

                //every sheet has rows, iterate over them
                Iterator<Row> rowIterator = sheet.iterator();

                if (rowIterator.hasNext())
                    rowIterator.next();

                while (rowIterator.hasNext()) 
                

                    String libelle="";
                    .....

                    //Get the row object
                    Row row = rowIterator.next();

                    //Every row has columns, get the column iterator and iterate over them
                    Iterator<Cell> cellIterator = row.cellIterator();

                    while (cellIterator.hasNext()) 
                    
                        //Get the Cell object
                        Cell cell = cellIterator.next();

                        //check the cell type and process accordingly
                        //2nd column

                        switch(cell.getCellType())
                        case Cell.CELL_TYPE_STRING:

                            ......
                            if (row.getCell(5) == null)
                            
                               System.out.println("Cell is Empty in Column:" );

                             else if (row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_STRING)
                            
                            libelle= row.getCell(5).getStringCellValue().trim();
                            

...

【问题讨论】:

您是否尝试阅读Apache POI docs on iterating over rows and cells? 【参考方案1】:

您可以使用Sheet.getRow(int rownumber) 获取具有特定数字的行。 您可以通过Row.getRowNum() 获取当前行的编号,通过Cell.getColumnIndex() 获取单元格的索引。

因此,下一行单元格的值将是

Row nextRow = sheet.getRow(row.getRowNum() + 1);
if (nextRow != null)
    String value = nextRow.getCell(curCel.getColumnIndex(), Row.CREATE_NULL_AS_BLANK).getStringCellValue();

【讨论】:

【参考方案2】:

如果计算的索引小于Sheet.getLastRowNum(),则可以通过Sheet.getRow(int)方法找出当前Cell.getRowIndex()访问下一个Row,以便访问以下Cell中的Cell.getColumnIndex() Row.

【讨论】:

以上是关于使用 POI 从 Excel 工作表中的下一行获取值的主要内容,如果未能解决你的问题,请参考以下文章

POI操作Excel如何禁止Excel中的复制和选定?

java中使用POI如何获得EXCEL中的一行数据?

JAVA中如何取得EXCEL中确定已知的单元格所包含的列数 急急急!!!

使用poi创建Excel文件

poi解析excel表头不在一行

使用poi库为java在excel表中写入值的问题