有没有办法从特定(空)行开始删除所有后续行?我尝试过使用循环。
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);
}
}
如果在Excel中有数百万个空行,删除这些行将需要几分钟的时间。
Epplus提供了这个方法worksheet.DeleteRow(int rowFrom, int rows)
,但我不知道所有额外空行的数量。
在下面的例子中,我需要删除12行及以上的所有行,但问题是我不知道具体的行数,即空行从哪一行开始。
另一种方法是找到最后一个非空行,然后删除该范围内的所有内容,这种方法会更快,但在表格中还有另一个问题是空行。ws.DeleteRow(lastFilledTableRow, workSheet.Dimension.End.Row - tableRowsCount,true);
在这个例子中,问题出在红色行,但也许我会告诉用户这种Excel格式是无效的,并绕过这个问题。