poi获取excel表格报空指针异常的处理方式之一

1.读取excel表格的一般逻辑

row.getCell(1).getStringCellValue()

如果单元格中没有数据,在getCell(1)时就会报空指针异常

2.poi3.17版本的源码中给出了两种获取单元格数据的方法,一个是单参数按照poi默认策略(RETURN_NULL_AND_BLANK)直接读取指定单元格,另一个是指定单元格并按定义的策略读取数据并做处理

public XSSFCell getCell(int cellnum) {
    return this.getCell(cellnum, this._sheet.getWorkbook().getMissingCellPolicy());
}


public XSSFCell getCell(int cellnum, MissingCellPolicy policy) {
    if (cellnum < 0) {
        throw new IllegalArgumentException("Cell index must be >= 0");
    } else {
        Integer colI = new Integer(cellnum);
        XSSFCell cell = (XSSFCell)this._cells.get(colI);
        switch(policy) {
        case RETURN_NULL_AND_BLANK:
            return cell;
        case RETURN_BLANK_AS_NULL:
            boolean isBlank = cell != null && cell.getCellTypeEnum() == CellType.BLANK;
            return isBlank ? null : cell;
        case CREATE_NULL_AS_BLANK:
            return cell == null ? this.createCell(cellnum, CellType.BLANK) : cell;
        default:
            throw new IllegalArgumentException("Illegal policy " + policy);
        }
    }
}

前两种策略都是对单元格进行直接操作,第三种策略(CREATE_NULL_AS_BLANK)是对没值的单元格进行非空处理(创建一个,其值为“”),使其不会报空指针异常,一般的介绍中都是以单参获取单元格数据的方法进行讲解,导致部分新手会在赋值过程中配合三目运算进行处理,造成代码冗余

3.非空判断处理的逻辑

row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue()

当前处理会按照poi中个人设置的处理策略进行处理,避免了不必要的代码量

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值