首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用单元格引用检查空白单元格

使用单元格引用检查空白单元格
EN

Stack Overflow用户
提问于 2016-05-18 22:14:57
回答 2查看 670关注 0票数 0

我一直在POI中编写代码,将数据输入到Excel工作表中。在这里,我首先需要遍历一组行,我不确定其中有多少行,可能是10行或100行。但是我发现在最后有一个空白的单元格。在那个空格之后,又是一组行。我并不担心第二盘。我需要知道第一组是否已经结束了。

这很让人困惑。现在我的工作表中有5个用户,如下所示。在第5个用户之后有一个空白单元格。我正在尝试打印所有的用户,如果有一个空白停止它。

代码语言:javascript
复制
AAA
BBB
CCC
DDD
EEE

JJJ

我正在使用下面的代码来完成这项工作。

代码语言:javascript
复制
String userName;
CellReference ref = null;
Row row;
Cell cell;
do {
    userName = "B" + i;
        ref = new CellReference(userName);
        row = sheet.getRow(ref.getRow());
        cell = row.getCell(ref.getCol());
        System.out.println(cell.getStringCellValue() + "\t" + userName);
        i++;
} while (row != null);

但我得到的输出如下所示。

代码语言:javascript
复制
AAA     B4
BBB     B5
CCC     B6
DDD     B7
EEE     B8
Exception in thread "main" java.lang.NullPointerException
    at FinalSheetFillData.main(FinalSheetFillData.java:26)

我哪里出了问题,我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2016-05-18 22:18:02

您需要检查cellRow值,然后检查system.out

代码语言:javascript
复制
String userName;
CellReference ref = null;
Row row;
Cell cell;
do {
    userName = "B" + i;
        ref = new CellReference(userName);
        row = sheet.getRow(ref.getRow());
        cell = row.getCell(ref.getCol());
        if(cell.getStringCellValue()!=null){
            System.out.println(cell.getStringCellValue() + "\t" + userName);
        }else{
            System.out.println(" " + "\t" + userName);
        }
        i++;
} while (row != null);
票数 2
EN

Stack Overflow用户

发布于 2016-05-19 22:02:14

如果工作表中缺少行,则Sheet.getRow()将返回null。而且,经常会缺少空行。cells和Row.getCell()的情况。所以一旦你到达B9单元格,代码就会在if(cell.getStringCellValue()上爆炸,因为cellnull。您可以使用for each构造进行循环来避免这些问题,或者在这种情况下可以使用常规的for循环,因为您正在寻找要停止处理的缺少的行。

代码语言:javascript
复制
String userName;
CellReference ref = null;
Row row;
Cell cell;
for (int i = sheet.getFirstRow(); i <= sheet.getLastRow(); i++) {
    userName = "B" + i;
    ref = new CellReference(userName);
    row = sheet.getRow(ref.getRow());
    if (row != null) {
        cell = row.getCell(ref.getCol());
        if(cell != null && !cell.toString().trim().equals("")){
            System.out.println(cell.getStringCellValue() + "\t" + userName);
        }else{
            break;
        }
     } else {
        break;
     }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37302271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档