반응형
C#에서 엑셀 파일로 저장하기 위해서는 Microsoft Excecl Object Library를 참조로 추가해야 합니다.

솔루션탐색기에서 프로젝트 -> 참조 우클릭 - 참조 추가를 클릭 한 후

Microsoft Excel Object Library를 체크한 후 확인을 클릭합니다.
엑셀 파일에 저장하는 코드는 다음과 같습니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Runtime.InteropServices; | |
using Excel = Microsoft.Office.Interop.Excel; | |
namespace ExportExcel | |
{ | |
class Dog | |
{ | |
public string name; // 개 이름 | |
public string breeds; // 개 종류 | |
public string sex; // 개 성별 | |
} | |
class Program | |
{ | |
static Excel.Application excelApp = null; | |
static Excel.Workbook workBook = null; | |
static Excel.Worksheet workSheet = null; | |
static void Main(string[] args) | |
{ | |
try | |
{ | |
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // 바탕화면 경로 | |
string path = Path.Combine(desktopPath, "Excel.xlsx"); // 엑셀 파일 저장 경로 | |
excelApp = new Excel.Application(); // 엑셀 어플리케이션 생성 | |
workBook = excelApp.Workbooks.Add(); // 워크북 추가 | |
workSheet = workBook.Worksheets.get_Item(1) as Excel.Worksheet; // 엑셀 첫번째 워크시트 가져오기 | |
workSheet.Cells[1, 1] = "이름"; | |
workSheet.Cells[1, 2] = "종류"; | |
workSheet.Cells[1, 3] = "성별"; | |
// 엑셀에 저장할 개 데이터 | |
List<Dog> dogs = new List<Dog>(); | |
dogs.Add(new Dog() { name = "백구", breeds = "진돗개", sex = "여" }); | |
dogs.Add(new Dog() { name = "곰이", breeds = "시바", sex = "남" }); | |
dogs.Add(new Dog() { name = "두부", breeds = "포메라니안", sex = "여" }); | |
dogs.Add(new Dog() { name = "뭉치", breeds = "말티즈", sex = "남" }); | |
for (int i = 0; i < dogs.Count; i++) | |
{ | |
Dog dog = dogs[i]; | |
// 셀에 데이터 입력 | |
workSheet.Cells[2 + i, 1] = dog.name; | |
workSheet.Cells[2 + i, 2] = dog.breeds; | |
workSheet.Cells[2 + i, 3] = dog.sex; | |
} | |
workSheet.Columns.AutoFit(); // 열 너비 자동 맞춤 | |
workBook.SaveAs(path, Excel.XlFileFormat.xlWorkbookDefault); // 엑셀 파일 저장 | |
workBook.Close(true); | |
excelApp.Quit(); | |
} | |
finally | |
{ | |
ReleaseObject(workSheet); | |
ReleaseObject(workBook); | |
ReleaseObject(excelApp); | |
} | |
} | |
/// <summary> | |
/// 액셀 객체 해제 메소드 | |
/// </summary> | |
/// <param name="obj"></param> | |
static void ReleaseObject(object obj) | |
{ | |
try | |
{ | |
if(obj != null) | |
{ | |
Marshal.ReleaseComObject(obj); // 액셀 객체 해제 | |
obj = null; | |
} | |
} | |
catch(Exception ex) | |
{ | |
obj = null; | |
throw ex; | |
} | |
finally | |
{ | |
GC.Collect(); // 가비지 수집 | |
} | |
} | |
} | |
} |
ReleaseObject(object obj) : 엑셀 객체를 사용하고 난 후 반드시 엑셀 객체를 해제(Release)해 주어야 합니다.
셀에 데이터를 저장하기 위해서는 workSheet.Cells[row, column]를 사용하는데 row, column의 인덱스는 0이 아닌 1부터 시작해야 합니다.
소스 코드를 실행하게 되면 지정된 경로에 엑셀 파일이 저장되고 다음과 같은 결과를 확인할 수 있습니다.

반응형
댓글