簡體   English   中英

從Excel.Interop表中刪除並插入多行

[英]Deleting and inserting multiple rows from a Excel.Interop table

是否可以在表中刪除並插入多行? 假設我想刪除一定范圍的行,例如210-560、10-11等。是否可以像下面的示例一樣在一行內完成操作,還是需要創建一個具有范圍的循環數字以刪除范圍?

C#

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.Delete();

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.InsertRowRange();

使用VBA時,可以使用這樣的簡單方法:

Rows("210:560").Delete
Rows("11:12").EntireRow.Insert

如果要執行與C#中的VBA代碼相同的操作,則可以簡單地編寫:

var ws = xlWorkBook.Worksheets["Sheet1"];
ws.Range["210:560"].Delete();
ws.Range["11:12"].Insert();

您甚至可以一次指定多行:

ws.Range["210:560,722:838,917:917"].Delete();
ws.Range["11:12,15:17,19:19"].Insert();

對於單行,您必須如上所述指定兩次行號。

行字符串的大小限制為255個字符。 如果要一次性處理多於此的行,則必須對范圍進行並集。 因此,例如:

application.Union(ws.Range["2:5,7:8,9:9"], ws.Range["11:12,15:17,19:19"]).Delete();

(只是為了簡便起見,我沒有在這個例子中顯示出任何大的字符串。 application是當前的實例Excel.Application )。

唯一需要注意的是:您必須使用在“控制面板”的“ Windows區域設置”中指定的列表分隔符。 如果您在全球范圍內或向未知用戶(例如ISV)交付應用程序,則這一點尤其重要。 例如,對於德國用戶,默認列表分隔符為; 而不是,像英語用戶。 但是,當然,用戶可以手動將其設置為幾乎任何內容。

您可以使用以下方法從Windows區域設置中獲取當前列表分隔符:

var sep = (string)application.International[XlApplicationInternational.xlListSeparator];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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