본문 바로가기

C Sharp

C#으로 Excel문서 만들기 예제, 엑셀문서.

반응형

C#으로 엑셀문서 만드는 예제. 

C#으로 DataBase 및 웹파싱등과 연계해서 해당 내용을 엑셀문서로 보관정리 할수 있다.

똑같이 반복해야 하는 수기작업등에 유용하게 사용할 수 있다.


예제 프로그램이므로, 빈화면에 버튼하나만 올려진 폼을 작성하고,

폼에서 버튼을 누르면 엑셀 문서를 생성하고 A1 ~ G1 까지 셀을 머지한 후에 "C# Excel Creation" 이라는 문구 삽입 후 볼드체를 주고 폰트 색상을 빨간색으로 변경 한 후 테두리를 그리는 것까지 한다.

IDE툴은 Micro soft Visual Studio 2005를 사용하였다.


먼저 빈폼에 버튼하나만 올리고 버튼 클릭 이벤트를 생성한다.

이후 참조에 Excel 관련 라이브러리를 올려준다.

솔루션 탐색기에서 해당 프로젝트의 참조 메뉴에서 우클릭한다. 

참조 추가를 누르면 아래와 같은 창이 뜨는데 COM 영역에서 "Microsoft Excel 12.0 Object Library"를 선택한다.

이 라이브러리는 해당 컴퓨터에 설치된 Excel 버전에 따라 명칭 또는 버전이 다를 수 있다.

해당 라이브러리 버전 또는 유형에 따라 제공하는 함수등이 달라질수 있다.


위의 작업까지 마쳤으면, Excel 라이브러리 사용을 위한 Using 문과 관련 내용을 선언해준다.


using System.Runtime.InteropServices;

using System.Reflection;

using Excel = Microsoft.Office.Interop.Excel;


이후 전체 소스는 아래와 같다.


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;


using Excel = Microsoft.Office.Interop.Excel;

using System.Reflection;

using System.Runtime.InteropServices;


namespace ExcelExample

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}


private void button1_Click(object sender, EventArgs e)

{

try

{

Excel.Application oXL = new Excel.Application();    //Excel application create

oXL.Visible = true;    //true 설정하면 엑셀이 작업되는 내용이 보인다.

oXL.Interactive = false;    //false로 설정하면 유저의 조작에 방해받지 않는다.


Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));//워크북생성

Excel._Worksheet oSheet = (Excel._Worksheet)oWB.ActiveSheet;//시트 가져오기


Excel.Range oRng = null;    //각종 셀 처리 담당할 변수


oRng = oSheet.get_Range("B2", "H2"); //해당 범위의 셀 획득

oRng.MergeCells = true; //머지

oRng.Value2 = "C# Excel Creation";  //문구 삽입

oRng.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;   //가운데 정렬

oRng.Font.Bold = true;  //볼드

oRng.Font.Color = -16776961;    //폰트 컬러


//테두리

oRng.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;

oRng.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;

oRng.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;

oRng.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;


oXL.Interactive = true; //이제 유저가 조작할수 있어야 하니까.


//오브젝트 해제 하기

Marshal.ReleaseComObject(oXL);

Marshal.ReleaseComObject(oWB);

Marshal.ReleaseComObject(oSheet);


//가비지 컬렉터

GC.Collect();

}

catch (Exception eExcep)

{

String errorMessage;

errorMessage = "Error: ";

errorMessage = String.Concat(errorMessage, eExcep.Message);

errorMessage = String.Concat(errorMessage, " Line: ");

errorMessage = String.Concat(errorMessage, eExcep.Source);

MessageBox.Show(errorMessage.ToString());

}

}

}

}


결과는 아래와 같습니다. 단순하지만 이게 프로그램을 사용해서 자동으로 만들어진 엑셀 문서입니다.

위의 문구들을 적절히 재사용하여 반복하면 충분히 복잡한 문서들도 자동으로 만들수 있습니다.

특히 단순반복적인 엑셀 작업이 많은 오피스에서 매우 유용한 스킬입니다.


예를 들어서, 

환율정보를 크롤링해서 엑셀문서에 저장해두는 자동화 라던지,

견적서 내용을 XML에 기록해주면 자동으로 서식화 해서 엑셀로 출력한다던지,

DB 내용을 다듬어서 자동화된 보고서 생성 시스템이라던지 하는것들이 가능합니다.


DB, XML , 웹 크롤링 + 엑셀 = 자동화된 수식, 서식화된 문서를 사용할수 있는거죠.

의외로 매일 매일 손이 가는 저런 작업들을 몇명의 직원이 업무 시간을 할당해 가며 수동으로 수행하는 현장도 많습니다.

이런 경우에 적용하면 업무 효율을 아주 크게 늘릴수 있는거죠.

완전 자동화에 의한 정확도는 덤으로 따라 오는것이구요.


 

반응형

'C Sharp' 카테고리의 다른 글

C# 외부 프로그램 실행. Process.Start()  (2) 2015.04.23
C# DataGridView ComboBox 넣기 예제  (0) 2015.04.21
C# Exception Error Message  (0) 2015.04.21
C# MSSQL DataBase연동.  (0) 2015.04.21
C# File Read, Write, 파일 입출력 예제  (0) 2015.04.10