POIを使用してExcelシートから空白行を削除したい。
shiftRow()
またはのようなメソッドremoveRow()
がありますが、この場合は使用できません。私がそれを成し遂げるのを手伝ってください。
POIを使用してExcelシートから空白行を削除したい。
shiftRow()
またはのようなメソッド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);