此代码方法主要是判断了除了表头之外的数据去掉空行的方法(注意一行中的数据若存在一个有数据的我就认为是存在的)
首先直接上代码
我这边是直接分成了两个其实是可以做成一个方法的。
网上的代码大都存在问题。所以我自己写了一个供大家参考
//去掉空行(最后一行的判断不能在里面判断)(因为自带的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;
}