当前位置: 首页 > 知识库问答 >
问题:

如何使用poi获取包含空白单元格的行号

邬楚青
2023-03-14

我在读一个excel文件。我希望得到空单元格的行和列号,如果有类似的:

A      B     C      D         E

Jen  John  Alex 03-11-95  {BLANK}

这里我想要空白单元格的行和列索引,我试了很多东西但都不成功

                List<Student> listStudent = new ArrayList<>();
                FileInputStream inputStream = new FileInputStream(file);

                Workbook workbook = new XSSFWorkbook(inputStream);
                Sheet firstSheet = workbook.getSheetAt(0);
                Iterator<Row> iterator = firstSheet.iterator();

                while (iterator.hasNext()) {
                    Row nextRow = iterator.next();
                    Iterator<Cell> cellIterator = nextRow.cellIterator();
                    Student student = new Student();

                    while (cellIterator.hasNext()) {
                        Cell nextCell = cellIterator.next();
                        int columnIndex = nextCell.getColumnIndex();             

                        if (!firstName.contains("not_in_file") && columnIndex == Integer.parseInt(firstName)) {
                            student.setFirstName((String) getCellValue(nextCell));
                        } else if (!familyName.contains("not_in_file") && columnIndex == Integer.parseInt(familyName)) {
                            student.setFamilyName((String) getCellValue(nextCell));
                        } else if (!preferName.contains("not_in_file") && columnIndex == Integer.parseInt(preferName)) {
                            student.setPreferName((String) getCellValue(nextCell));
                        } else if (!dob.contains("not_in_file") && columnIndex == Integer.parseInt(dob)) {
                            student.setDob((String) getCellValue(nextCell));
                        } else if (!guardianName.contains("not_in_file") && columnIndex == Integer.parseInt(guardianName)) {
                            student.setGuardianName((String) getCellValue(nextCell));
                        }

                    }
                    listStudent.add(student);
                }
                System.out.println(" listStudent : " + listStudent);
                workbook.close();
                inputStream.close();



private Object getCellValue(Cell cell) {
        switch (cell.getCellType()) {
        case Cell.CELL_TYPE_STRING:
            return cell.getStringCellValue();

        case Cell.CELL_TYPE_BOOLEAN:
            return cell.getBooleanCellValue();

        case Cell.CELL_TYPE_NUMERIC:
            return cell.getNumericCellValue();
        }

        return null;
    }

共有1个答案

林鹭洋
2023-03-14

有一个细胞常数。可以将cell.cell_type_blank大小写添加到getCellValue方法中。

private Object getCellValue(Cell cell) {
    switch (cell.getCellType()) {
    case Cell.CELL_TYPE_BLANK:
        return "";
    case Cell.CELL_TYPE_STRING:
        return cell.getStringCellValue();

    case Cell.CELL_TYPE_BOOLEAN:
        return cell.getBooleanCellValue();
    case Cell.CELL_TYPE_NUMERIC:
        return cell.getNumericCellValue();

    }

    return null;
}
 类似资料:
  • 有人能给我一个解决方案,我可以在单元格为空时读取应用到单元格的样式吗? 谢了。

  • 我正在尝试使用Java中的Apache Poi将一些结果写入excel文件。我将结果存储在String变量中,然后在data.put调用中使用这些变量,前两个可以正常工作,但第三个导致空白单元格。当我打印到system.out.println()时,它显示良好? //创建空白工作簿XSSFWorkbook workbook=new XSSFWorkbook(); 子节点名称:#text 子节点文本

  • 我试图使用Apache POI从excel.xlsx文件中获取java程序中的一些值,但我遇到了麻烦,因为我的循环有时会遇到一个空单元格,然后得到一个NullPointerException。我如何才能在读取细胞之前“测试”它?下面是我的一段代码: 这让我想到: 我想知道在尝试读取单元格之前是否有可能检查单元格是否为空,那么我就不会得到NPE。提前感谢!

  • 我试图在一行中获得非空白的单元格数。 与 但对于这两行,我得到的int值都大于表中实际有值的单元格数。这可能是什么原因?单元格格式和/或样式是否有责任? 我还注意到,如果我从excel工作表中删除值(手动,而不是从代码中),poi仍然将它们视为非空(null?),并将它们包含在总数中。 UPD:经过更多的研究,我发现如果我给一个单元格增加价值,然后删除它,那么POI仍然认为它是非空的。有没有办法在

  • 问题内容: 我使用telnet输入这样的命令行命令 所有这三个返回相同的错误。 问题答案: 如果只有telnet(而不是’redis-cli’),则需要使用Redis二进制安全统一协议在键名中使用空格,例如: 有关Redis二进制安全协议的更多信息:http : //redis.io/topics/protocol

  • 我一直在用POI编写一个代码来将数据输入到Excel表中。首先,我需要遍历一组行,我不确定其中有多少行,可能是10或100行。但我发现末尾有一个空白单元格。在那个空白之后,又有一组行。我不担心第二盘。我需要找到第一盘是否已经结束。 这很让人困惑。现在我有5个用户在我的工作表如下所示。在第5个用户之后有一个空白单元格。我试图打印所有的用户,如果有一个空白停止它。