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