【问题标题】:Deleting and inserting multiple rows from a Excel.Interop table从 Excel.Interop 表中删除和插入多行
【发布时间】:2017-03-11 15:26:19
【问题描述】:

是否可以在表中删除和插入多行?假设我想删除一系列行,例如 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# vsto excel-interop listobject


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2012-09-08
      相关资源
      最近更新 更多