2013-08-30 40 views
4

此問題與詢問here的問題非常相似。但給出的答案建議複製格式和數據。我有一個使用SSIS生成的Excel表格(.xlsx)。現在我已經在第一行中設置了格式,我想將其複製到工作表中已經填充的所有行。我該如何使用C#來做到這一點?我正在使用Excel互操作。使用c將格式從一行復制到另一行#

+0

顯示用於格式化第一行的代碼,也許它可以應用於其他行。 –

+1

我正在手動設置模板文件第一行的格式。新行被添加到此模板文件中,並且格式化需要應用於這些行。 – Pankaj

回答

8

您可以使用PasteSpecialxlPasteFormats

Excel.Range R1 = (Excel.Range)oSheet.Cells[11, 11]; 
R1.Copy(Type.Missing); 

Excel.Range R2 = (Excel.Range)oSheet.Cells[15, 15]; 
R2.PasteSpecial(Excel.XlPasteType.xlPasteFormats, 
    Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false); 
2

所以,你希望從第一單元格複製格式並將其應用到所有

有一種方法來處理:

Range sourceRange = sheet.get_Range("A1:A1"); 
sourceRange.Copy(); 

Range last = sheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing); 
Range destinationRange = sheet.get_Range("A1", last); 

destinationRange.PasteSpecial(XlPasteType.xlPasteFormats); 
+0

'System.Type.Missing'需要提供缺少的參數到'PasteSpecial'。 –

+1

運行沒有任何參數的'PasteSpecial()'工作得很好。所以你是什麼意思 ? – mickro

+0

我的錯誤,對不起!我錯誤地回憶起C#需要在使用Interop時提供的所有參數。 C#2010(其中引入了*可選參數*)不再需要此要求。 –

0

我用它作爲mickro解釋它完美地工作!!!!!

   Range contentAlarms =exlWsheetAlarms.get_Range("A1:G"+countList); 
       contentAlarms.Copy(Type.Missing); 

       Range last = exlWsheetUlt.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing); 
       Range destinationRange = exlWsheetUlt.get_Range("B90", last); 

       destinationRange.PasteSpecial(XlPasteType.xlPasteFormats); 

謝謝!

+0

所以你是從contentAlarms複製到最後? – Si8

相關問題