簡體   English   中英

如何從Excel中刪除除C#中的標頭之外的所有行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM