从 Excel.Interop table 中删除和插入多行
Deleting and inserting multiple rows from a Excel.Interop table
是否可以在 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];
是否可以在 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];