2017-06-13 73 views
0

我有一列,我正在查看3-37行并将其移动到列的右侧。如何使用Excel Interop切割一系列单元格

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

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

我也试着从这里Cut and Paste Columns in Excel Range with c#但没有什么解决办法似乎复制

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

回答

1

如果你只想与源单元格的内容替换目标单元格的内容,并删除源单元格的内容,那么Range.Cut方法应该,如果你与目标范围内调用它作为参数传递给做的伎俩:

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

这将复制sourceRange到剪贴板,但如果你已经对剪贴板一系列清除剪贴板。

您也可以只指定目标区域的左上角单元格,它会做同样的事情:

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

如果你想保留源单元格的内容,使用Copy代替Cut

(请注意,声明insertRange = copyRange;一定要从未拷贝任何地方的任何细胞,如果insertRange是一个局部变量。这只会发生,如果C#支持的重载赋值(其中,据我所知,事实并非如此),或者一些其他代码以某种方式“感觉到”该作业)。

相关问题