关于POI解析Excel遇到空行的问题

因为我们在录入excel时如果直接按delete键删除,POI会认为我们delete的这行是null,但是存在
那么在读取过程中,就会有行数干扰问题,导致报空指针异常

这里我是这么做的

int rowCount = sheet.getLastRowNum();
int rowNums = 0;
//这里是去除表格里的空行,防止行数干扰
for(int i = 1; i<rowCount; i++) {
   XSSFRow row = sheet.getRow(i);
   boolean rowEmpty = isRowNotEmpty(row);
   if(null != row && rowEmpty && row.getFirstCellNum() > -1) {
       rowNums++;
   }
}
public static boolean isRowNotEmpty(XSSFRow row) {
    if (StringUtil.isNotNull(row)) {
        for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
            XSSFCell cell = row.getCell(c);
            if (cell != null && cell.getCellType() != BLANK) {
                return true;
            }
        }
    }
    return false;
}

备注:这里的BLANK记得引入

import static org.apache.poi.ss.usermodel.CellType.BLANK;
//获取最后单元格num,即总单元格数 ***注意:此处从1开始计数***
for (int row = 1; row <= rowNums/*lastRowNum*/; row++) {
	//这里是为了强制读30列,防止客户不填
    for (int rol = 0; rol < 30/*sheet.getRow(row).getLastCellNum()*/; rol++){
        XSSFCell cell = sheet.getRow(row).getCell(rol);
        if (StringUtil.isNotNull(cell)) {
            cell.setCellType(CellType.STRING);
        }
        fileContent.append((StringUtil.isNotNull(cell)? cell : "0") + ((rol+1)%30 == 0 ? "\n" : ","));
    }
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值