如何使用Excel Interop切割一系列单元格
问题描述:
我有一列,我正在查看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());
答
如果你只想与源单元格的内容替换目标单元格的内容,并删除源单元格的内容,那么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#支持的重载赋值(其中,据我所知,事实并非如此),或者一些其他代码以某种方式“感觉到”该作业)。