我有一个列,我正在寻找切割行3-37并将其直接移动到右侧的列。
我尝试了以下操作,它将值正确地向右移动,但单元格样式不会复制。
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());
答案 0 :(得分: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#支持重载赋值时才会发生(据我所知,它没有)或者某些其他代码以某种方式“感知”了作业。)