2017-06-13 76 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#支持的重載賦值(其中,據我所知,事實並非如此),或者一些其他代碼以某種方式「感覺到」該作業)。

相關問題