有可能以某种方式删除特定(空)行中的所有后续行?我试过cyclus
for (int rowNum = 1; rowNum <= worksheet.Dimension.End.Row; rowNum++)
{
var rowCells = from cell in worksheet.Cells
where (cell.Start.Row == rowNum)
select cell;
if (!rowCells.Any(cell => cell.Value != null))
{
worksheet.DeleteRow(rowNum);
}
}
Run Code Online (Sandbox Code Playgroud)
但如果excel中有数百万个空行,则需要几分钟.
Epplus提供此方法, worksheet.DeleteRow(int rowFrom, int rows)但我不知道所有其他空行的计数.
在下面的示例中,我需要删除所有12+行,但问题是我不知道特定行,空行开始的位置.
替代aproach可以找到最后一个非空行并删除范围的所有内容,这将更快,但是在表内有空行的另一个问题.
ws.DeleteRow(lastFilledTableRow, workSheet.Dimension.End.Row - tableRowsCount,true);
Run Code Online (Sandbox Code Playgroud)
在这个例子中,问题是红色行,但也许我会告诉用户这种excel格式无效并避免问题.