如何使用Excel Interop来裁剪一系列单元格

我有一个专栏,我正在削减行3-37行,并将其移动到它的右侧直接列。

我尝试了以下,它正确地将值移到右侧,但单元格样式不会复制。

Range copyRange = ws1.Range["L5:L37"]; Range insertRange = ws1.Range["M5:M37"]; insertRange = copyRange; 

我也尝试过从这里解决scheme在Excel中剪切和粘贴列使用C#,但似乎没有任何复制

 Range copyRange = ws1.Range["L5:L37"]; Range insertRange = ws1.Range["M5:M37"]; //insertRange.Insert(copyRange.Cut()); insertRange.Insert(XlInsertShiftDirection.xlShiftToRight, copyRange.Cut()); 

如果只想用目标单元格的内容replace目标单元格的内容,并删除源单元格的内容,那么Range.Cut方法应该做到这一点,如果你把目标单元格作为论据:

 Range sourceRange = ws1.Range["L5:L37"]; Range destinationRange = ws1.Range["M5:M37"]; sourceRange.Cut(destinationRange); 

不会sourceRange复制到剪贴板,但是如果剪贴板上已经有一个范围, 它将清除剪贴板。

您也可以只指定目标范围的左上angular的单元格,它将执行相同的操作:

 Range sourceRange = ws1.Range["L5:L37"]; Range destinationRange = ws1.Range["M5"]; sourceRange.Cut(destinationRange); 

如果要保留源单元格的内容,请使用“ Copy而不是“ Cut

(请注意, insertRange = copyRange;绝对不应该在任何地方复制任何单元格,如果insertRange是一个局部variables,那么只有当C#支持重载赋值(据我所知,它不会)或者某种其他代码以某种方式“感觉到“这个任务。)