Epplus删除特定行的所有行

有可能以某种方式删除特定(空)行中的所有后续行? 我试过cyclus

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

但如果在excel中有数百万个空行,则需要几分钟。

Epplus提供此方法worksheet.DeleteRow(int rowFrom, int rows)但我不知道所有其他空行的计数。

在下面的示例中,我需要删除所有12+行,但问题是我不知道空行开始的特定行。

在此处输入图像描述

替代aproach可以找到最后一个非空行并删除范围的所有内容,这将更快,但是在表内有空行的另一个问题。

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

在这个例子中,问题是红色的行,但也许我会告诉用户这种excel格式无效并避免问题。

在此处输入图像描述

我知道它已经老了,但我找不到任何解决方案,所以我自己做了一个。 它检查最后一行是否为空,如果是,则删除它并执行此操作直到找到非空行。 (非空意味着:此行中的所有列都有一些值)

 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); }