C#에서 Excel 실행법
| dynamic excelApp = AutomationFactory.CreateObject("Excel.Application"); | cs |
위와같은 코드를 이용하면 엑셀이 실행된다.
하지만 이전에 작업해주어야 할것이 한가지 있다.
Excel.Application을 이용하려면 프로젝트에 Microsoft.Office.Interop.Excel 항목을 참조 추가하여야한다.
추가 방법은
Project -> Add Reference -> COM 탭 -> Microsoft Excel Object Library체크 -> OK
만약 Microsoft Excel Object Library이 보이지않는다면 엑셀의 설치와 VS의 설치 순서가 달라서 안보이는 것이다.
Office 2003 : http://www.microsoft.com/en-us/download/details.aspx?id=20923
Office 2007 : http://www.microsoft.com/en-us/download/details.aspx?id=18346
Office 2010 : http://www.microsoft.com/en-us/download/details.aspx?id=3508
해당 Office 버전에 맞추어서 다운받고 설치하면 Microsoft Excel Object Library 항목이 보일것이다.
그후 참조에 Microsoft Excel Object Library를 추가하고 상단의
| dynamic excelApp = AutomationFactory.CreateObject("Excel.Application"); | cs |
코드를 사용하면 엑셀이 실행된다.
그 후 엑셀의 셀병합, 정렬, 색상정보등을 변경할수있는데
엑셀을 dynamic 변수로 지정하여 어떠한 정보들이 존재하는지 알수가없다....많이 당황했다...하나하나 확인해보기도힘들었고...
MSDN에서 정리해두었다..
http://msdn.microsoft.com/en-us/library/ff846392.aspx
하지만.. 잘 모르겠다 이것만으로는...
그래서 내가 써본 부분과 참조한 부분을 적어본다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | excelApp.Workbooks.add() // 새 Excel파일 추가 excelApp.Workbooks.Open("c:\File.xls") // 파일 오픈 excelApp.ActiveWorkBook.Sheets("SheetName").Select // 시트 선택 excelApp.Application.Run("MacroName") // 매크로 실행 excelApp.Application.Visible=TRUE // 엑셀이 보이도록 설정 excelApp.Application.ScreenUpdating=true // Update 속성 excelApp.ActiveSheet // 활성시트 선택 서식 excelApp.ActiveSheet.Columns("A:U").AutoFit // 자동 열너비 excelApp.ActiveSheet.Columns("A:Z").ColumnWidth=6.75 // 열 너비 설정 excelApp.ActiveSheet.Rows("1:100").RowHeight=12 // 행 높이 설정 excelApp.Application.StandardFont="ArialNarrow"; // 글꼴 excelApp.Application.StandardFontSize="8" // 글자 크기 excelApp.ActiveSheet.Font.Size="8" // 글자 크기 excelApp.ActiveSheet.Font.Bold=True // Bold excelApp.ActiveSheet.Font.Italic=True // 이태리체 excelApp.ActiveSheet.Font.Underline=True // 언더라인 excelApp.ActiveSheet.Font.StrikeThrough=True // 취소선 excelApp.ActiveSheet.HorizontalAlignment=3 // 가로 정렬 4:오른쪽 3:중앙 2:왼쪽 // -4108: 중앙 -4131:왼쪽 -4152:오른쪽 excelApp.ActiveSheet.VerticalAlignment=2 // 세로 정렬 3:하단 2:중앙 1:상단 excelApp.ActiveSheet.cells(2,1).font.name='Arial' // 셀 글꼴 지정 excelApp.ActiveSheet.cells(2,1).font.size=25 // 셀 글자 크기 지정 | cs |
③범위지정작업
| excelApp.ActiveSheet.Range("A1:Z10").Property=value // ??? excelApp.ActiveSheet.Range("A1:Z10").Merge // 셀병합 excelApp.ActiveSheet.Range("A1:Z10").WrapText=False // 줄 바꿈 금지 excelApp.ActiveSheet.Range("A1:Z10").Borders(b_type).Weight=i_val // b_type 1:왼쪽 2:오른쪽 3:위쪽 4:아래쪽 5:왼쪽위쪽경사 6:오른쪽위쪽경사 // 셀단위임 7:왼쪽 8:위쪽 9:아래쪽 10:오른쪽 11:내부세로선 12:내부 가로선 // 범위지정 시 i_val 0:경계없음 및 1,2,3 굶은 선 Ole_object.ActiveSheet.Range("A1:Z10").Borders(b_type).linestyle=1 // 1:굵은선 2:가는선 4:점선 9:얇은 이중 실선 | cs |
④할당 (값입력) excelApp.ActiveSheet.range("A1:Z10").Cells.value=이름
excelApp.ActiveSheet.range("A1:Z10").Cells.value=1
excelApp.ActiveSheet.range("A1:Z10").Cells.value="2003-01-01"
excelApp.ActiveSheet.Range("A1:Z10").Cells(1,2).value= "연령"
excelApp.ActiveSheet.Range("A1:Z10").Cells(1,1).Formula = "=SUM(E1:E30)";
아래는 사용 예
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | dynamic excelApp; // 엑셀사용 excelApp = AutomationFactory.CreateObject("Excel.Application"); // 엑셀이 보이도록 excelApp.visible = true; // 워크북 지정 dynamic workbook = excelApp.workbooks; // 워크북 생성 workbook.Add(); // 활성시트 선택 dynamic sheet = excelApp.ActiveSheet; // 셀 선언 dynamic cell = null; for (int i = 65; i < 89; i++) { // Column width 지정 sheet.Columns(Convert.ToChar(i).ToString()).ColumnWidth = 3; } // Row height 지정 sheet.Rows(9).RowHeight = 4.5; // 병합 sheet.Range("G1:N3").merge(); // 폰트 크기 sheet.Range("G1:N3").Font.Size = 18; // 폰트 설정 sheet.Range("G1:N3").Font.Name = "Gulim"; // bold 처리 sheet.Range("G1:N3").Font.Bold = true; // 정렬 sheet.Range("G1:N3").HorizontalAlignment = -4108; // 색상정보 첫 215 B값 두번째 215 G값 255는 R값 sheet.Range("G1:N3").interior.Color = 215 * (int)Math.Pow(16, 4) + 215 * (int)Math.Pow(16, 2) + 255; // 입력할 cell 선택 cell = sheet.Cells[1, 7]; // 입력 cell.Value = "내용"; // 선긋기 sheet.Range("G1:N3").Borders.LineStyle = 1; // 입력할 cell 선택 cell = sheet.Cells[1, 7]; // 함수 입력 cell.Formula = "=SUM(E1:E30)"; | cs
|
정리하려고 했는데, "사소한 프로그래머의 소소한 행복"에서 퍼오다 보니 어찌 이렇게 되었네요.
엑셀을 잘 사용하면 마누라에게 사랑을 받게 됩니다.
^__^