[英]How to delete all rows from excel except header in 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);
.net的v4版本發生了變化,使用get_Range
停止了工作
如果您使用的是Excel,則將繼續在第二行上單擊Delete,並觀察下面的行向上移動,用刪除的行替換以前占用的單元格。
要在自動化中復制該行為:
for (int i = 2; i <= rows; i++)
{
((Range)ws.Rows[2]).Delete(XlDeleteShiftDirection.xlShiftUp);
}
請注意,您還可以預先構造一個范圍,並在不循環的情況下將其刪除,這樣會更快:
var range = (Range)ws.get_Range(
ws.Cells[1,2],
ws.Cells[ws.UsedRange.Cols.Count,ws.UsedRange.Rows.Count]
);
range.Delete(XlDeleteShiftDirection.xlShiftUp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.