C#

2013-08-30 1 views
4

을 사용하여 한 행에서 다른 행으로 형식 복사이 질문은 묻는 질문과 매우 비슷합니다. here. 그러나 주어진 답은 데이터와 함께 형식을 복사하는 것을 의미합니다. SSIS를 사용하여 생성하는 엑셀 시트 (.xlsx)가 있습니다. 이제 워크 시트에 이미 채워져있는 모든 행에 복사하려는 첫 번째 행에서 서식을 설정했습니다. C#을 사용하여 어떻게 할 수 있습니까? Excel interop을 사용하고 있습니다.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

내 실수, 미안 해요! Interop을 사용할 때 C#이 모든 인수를 제공해야한다고 잘못 생각했습니다. 이 요구 사항은 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