java,apache poi,空点错误

标签 java nullpointerexception apache-poi

我有一个看起来像这样的 Excel 文件

Name       Mark
CHE102     80
MTE100     85
MATH115 
.
.
.
.
.
..

我正在使用此代码此方法来提取信息

public void readData(Row row,Sheet ws){
    Iterator<Cell> cellIterator = row.cellIterator();
    Cell cell=cellIterator.next();
    name=cell.getStringCellValue();
    cell=cellIterator.next();
    mark=cell.getNumericCellValue();
}   

在我的主要即时通讯中,使用 for 循环如下:

for(int i=0;i<5;i++){
            arr[i]=new Test();
            Row row=rowIterator.next();
            arr[i].readData(row,ws);
             arr[i].setGrade();
             arr[i].outputData();
        }

但问题是,由于我的 Excel 文件中有许多空单元格,因此出现空点错误 我该如何解决这个问题?

最佳答案

您应该通过显式检查空值来防止空值:

例如你可以写

name= (cell==null) ? "" : cell.getStringCellValue();

但是,cellIterator 仅返回非空白单元格,因此当“名称”为空时,您会得到奇怪的结果。

尝试:

public void readData(Row row,Sheet ws){
    Cell cell=row.getCell(0, Row.RETURN_BLANK_AS_NULL);
    name= (cell==null) ? "" : cell.getStringCellValue();
    cell=row.getCell(1, Row.RETURN_BLANK_AS_NULL);
    mark= (cell==null) ? 0 : cell.getNumericCellValue();
}   

显式处理两个单元格。当然,您可以使用不同的逻辑,而不是使用空字符串和 0 来表示不存在的单元格。

另请参阅:http://poi.apache.org/spreadsheet/quick-guide.html#Iterator

关于java,apache poi,空点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575370/

相关文章:

java - 在 Java 中避免空值的好的轻量级设计模式是什么?

java - 在 Android Studio 3.0 RC2 中编译发布版本时出错

java - 存储数组 - MYSQL

java - 有没有人发现 OSGi 在企业应用程序中很有用?

java - Jackson ObjectMapper 即使使用 NON_NULL 也会抛出 NullPointerException

java - 连接android到wamp服务器,出现空指针异常

java - 使 Apache Poi Word 文件可通过 URL 下载

java - Apache POI : separate logic for xls and xlsx?

java - 在 Apache POI v3.11 中搜索 HWPF 包

java - 防止Java程序中的SQL注入(inject)攻击