繁体   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