我想使用 POI 从 Excel 表中删除空白行。
我们有类似shiftRow()
or的方法,removeRow()
但它不适用于这种情况。请帮我完成它。
我想使用 POI 从 Excel 表中删除空白行。
我们有类似shiftRow()
or的方法,removeRow()
但它不适用于这种情况。请帮我完成它。
请尝试以下代码。当存在多个连续的空白行时,它也适用于我。
for(int i = 0; i < sheet.getLastRowNum(); i++){
if(sheet.getRow(i)==null){
isRowEmpty=true;
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;
continue;
}
for(int j =0; j<sheet.getRow(i).getLastCellNum();j++){
if(sheet.getRow(i).getCell(j).toString().trim().equals("")){
isRowEmpty=true;
}else {
isRowEmpty=false;
break;
}
}
if(isRowEmpty==true){
sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
i--;
}
}
更改@Sankumarsingh 代码以使其工作
@Sankumarsingh 代码对我不起作用,因为它没有删除空的第一行。此问题的修复方法是:
private void removeEmptyRows(XSSFSheet sheet) {
Boolean isRowEmpty = Boolean.FALSE;
for(int i = 0; i <= sheet.getLastRowNum(); i++){
if(sheet.getRow(i)==null){
isRowEmpty=true;
sheet.shiftRows(i + 1, sheet.getLastRowNum()+1, -1);
i--;
continue;
}
for(int j =0; j<sheet.getRow(i).getLastCellNum();j++){
if(sheet.getRow(i).getCell(j) == null ||
sheet.getRow(i).getCell(j).toString().trim().equals("")){
isRowEmpty=true;
}else {
isRowEmpty=false;
break;
}
}
if(isRowEmpty==true){
sheet.shiftRows(i + 1, sheet.getLastRowNum()+1, -1);
i--;
}
}
}
虽然没有测试,试试这个:
HSSFSheet sheet = workBook.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
sheet.removeRow(row);
这是一种在单元格已删除作为非空行的行时中断单元格读取的方法
while(cellsIterator.hasNext()) {
Cell currentCell = cellsIterator.next();
if(currentCell.getCellType() == Cell.CELL_TYPE_BLANK) {
this.currentArraySheet.put("Headers",this.currentArraySheetHeaders);
this.currentArraySheet.put("Rows",this.currentArraySheetRows);
return;
}
if (currentCell.getCellTypeEnum() == CellType.STRING) {
System.out.print(currentCell.getStringCellValue() + " | ");
} else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
System.out.print(currentCell.getNumericCellValue() + "| ");
} else if (currentCell.getCellTypeEnum() == CellType.BOOLEAN) {
System.out.println(currentCell.getBooleanCellValue() + " | ");
}
}