是否可以在表格中删除和插入多行?假设我想删除一系列行,例如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
答案 0 :(得分:1)
如果你想和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];