如何删除Excel中的所有行,除了在C#中的标题

如何删除excel电子表格中的所有行,除了c#中的标题?

我正在尝试使用Microsoft.Office.Interop.Excel; 图书馆

我现在有这个代码

  Range xlRange = ws.UsedRange; int rows = xlRange.Rows.Count; Console.WriteLine(rows); for (int i = 2; i <= rows; i++) { ((Range)ws.Rows[i]).Delete(XlDeleteShiftDirection.xlShiftUp); } 

但是这不是删除所有的行,我认为是因为它删除了行,当它碰到一个特定的行时,不再有行,我做错了什么?

我设法做到了,我已经从底部开始,而不是顶部,所以现在我的循环是

  for (int i = rows; i != 1; i--) { ((Range)ws.Rows[i]).Delete(XlDeleteShiftDirection.xlShiftUp); } 

 var range = (Range)ws.Range[ws.Cells[2, 1], ws.Cells[ws.UsedRange.Rows.Count, ws.UsedRange.Columns.Count]]; range.Delete(XlDeleteShiftDirection.xlShiftUp); 

使用get_Range停止工作的.Net第4版发生了一些变化

如果您在Excel中工作,则会继续在第二行上执行删除操作,并观察向上移动的行,replace之前被删除行占用的单元格。

在自动化中复制该行为:

 for (int i = 2; i <= rows; i++) { ((Range)ws.Rows[2]).Delete(XlDeleteShiftDirection.xlShiftUp); } 

请注意,您也可以先build立一个范围,然后删除没有循环,这将更快:

 var range = (Range)ws.get_Range( ws.Cells[1,2], ws.Cells[ws.UsedRange.Cols.Count,ws.UsedRange.Rows.Count] ); range.Delete(XlDeleteShiftDirection.xlShiftUp);