Epplus supprime toutes les lignes d’une ligne spécifique

Il est possible de supprimer en quelque sorte toutes les lignes suivantes d’une ligne spécifique (vide)? J’ai essayé pour cyclus

for (int rowNum = 1; rowNum  cell.Value != null)) { worksheet.DeleteRow(rowNum); } } 

mais cela prend des minutes si, dans Excel, il y a des millions de lignes vides.

Epplus propose cette méthode worksheet.DeleteRow(int rowFrom, int rows) mais je ne connais pas le nombre total de lignes vides supplémentaires.

Dans l’exemple suivant, j’ai besoin de supprimer toutes les lignes 12+, mais le problème est que je ne connais pas la ligne spécifique, où commencent les lignes vides.

entrez la description de l'image ici

L’approche alternative peut être de trouver la dernière ligne non vide et de tout supprimer avec la plage, ce qui sera plus rapide, mais il existe un autre problème avec une ligne vide à l’intérieur du tableau.

 ws.DeleteRow(lastFilledTableRow, workSheet.Dimension.End.Row - tableRowsCount,true); 

Dans cet exemple, le problème est la ligne rouge, mais je dirai peut-être aux utilisateurs que ce type de format Excel n’est pas valide et contourner le problème.

entrez la description de l'image ici

Je sais que c’est vieux mais je ne pouvais pas trouver de solution alors faites-en une par moi-même. Il vérifie la dernière ligne s’il est vide et si oui, il la supprime et le fait jusqu’à ce qu’il trouve une ligne non vide. (non vide signifie ici: toutes les colonnes de cette ligne ont une valeur)

 worksheet.TrimLastEmptyRows(); public static void TrimLastEmptyRows(this ExcelWorksheet worksheet) { while (worksheet.IsLastRowEmpty()) worksheet.DeleteRow(worksheet.Dimension.End.Row); } public static bool IsLastRowEmpty(this ExcelWorksheet worksheet) { var empties = new List(); for (int i = 1; i <= worksheet.Dimension.End.Column; i++) { var rowEmpty = worksheet.Cells[worksheet.Dimension.End.Row, i].Value == null ? true : false; empties.Add(rowEmpty); } return empties.All(e => e); }