从Excel中删除和插入多行.互操作表

本文关键字:互操作 操作表 插入 Excel 删除 | 更新日期: 2023-09-27 18:15:22

是否可以在表中删除和插入多行?假设我想要删除一个范围的行,例如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

从Excel中删除和插入多行.互操作表

如果你想在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];