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