poi解析xls文件去掉文件空行(详细说明)

此代码方法主要是判断了除了表头之外的数据去掉空行的方法(注意一行中的数据若存在一个有数据的我就认为是存在的)

首先直接上代码
我这边是直接分成了两个其实是可以做成一个方法的。
网上的代码大都存在问题。所以我自己写了一个供大家参考

//去掉空行(最后一行的判断不能在里面判断)(因为自带的shiftRows移动行的方法中不能把最后一行往上移)
int lastRowNum = sheet.getLastRowNum();
for(int i =1;i<lastRowNum;i++){ 
    Row row = sheet.getRow(i);
    if (row == null){
        sheet.shiftRows(i+1,lastRowNum,-1); //这个方式是sheet自带的方法,作用是比如说第2行数据为空,是把第三行的数据提到第二行上,所以是i+1.
        i--;
        lastRowNum--;
    }else if (row != null){
        int nullCount = 0;
        //这个方法我是判断了每一行的数据为空的个数是否是与表头的个数是否一致(注意这边我是判断了哪怕存在一个有数据的我都认为是存在的)。rowCellCount这个玩意你们自己设。这个就是表头的个数。
        nullCount = getNullCount(rowCellCount, row, nullCount);
        if(nullCount == headParamList.size()){
            sheet.shiftRows(i+1,lastRowNum,-1);
            i--;
            lastRowNum--;
        }
    }
}

//最后一行的判断,为空直接移除
Row lastRow = sheet.getRow(lastRowNum);
if (lastRow == null){
//sheet自带方法,移除一行数据
    sheet.removeRow(lastRow);
}else if (lastRow != null){
    int nullCount = 0;
//这个方法我是判断了每一行的数据为空的个数是否是与表头的个数是否一致(注意这边我是判断了哪怕存在一个有数据的我都认为是存在的)。rowCellCount这个玩意你们自己设。这个就是表头的个数。
    nullCount = getNullCount(rowCellCount, lastRow, nullCount);
    if(nullCount == headParamList.size()){
        sheet.removeRow(lastRow);
    }
}
判断每一行错误的个数
public int getNullCount(int rowCellCount, Row row, int nullCount) {
    for (int a = 0; a < rowCellCount; a++) {
        Cell cell = row.getCell(a);
        if (ObjectUtils.isEmpty(cell)){
            nullCount = nullCount + 1;
        } else if (StringUtils.isNULL(cell.getRichStringCellValue().getString())){
            nullCount = nullCount + 1;
        }
    }
    return nullCount;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值