종달랩 종다리 이야기

'c# excel'에 해당되는 글 1건

  1. C# Excel 사용법

C# Excel 사용법

카테고리 없음
반응형


C#에서 Excel 실행법

1
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를 추가하고 상단의 

1
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

③범위지정작업 

1
2
3
4
5
6
7
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(164+ 215 * (int)Math.Pow(162+ 255;
// 입력할 cell 선택
cell = sheet.Cells[17];
// 입력
cell.Value = "내용";
 
// 선긋기
sheet.Range("G1:N3").Borders.LineStyle = 1;
 
// 입력할 cell 선택
cell = sheet.Cells[17];
// 함수 입력
cell.Formula = "=SUM(E1:E30)";
cs


정리하려고 했는데, "사소한 프로그래머의 소소한 행복"에서 퍼오다 보니 어찌 이렇게 되었네요.

엑셀을 잘 사용하면 마누라에게 사랑을 받게 됩니다.


^__^

반응형