C#에서 엑셀 파일로 저장하기 위해서는 Microsoft Excel Object Livrary를 참조로 추가해야 합니다.
솔루션 탐색기에서 프로젝트 -> 참조 우클릭 - 참조 추가를 클릭 한 후 Microsoft Excel Object Library를 체크한 후 확인을 클릭합니다.
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부터 시작해야 합니다.
바탕화면에 엑셀파일이 만들어 졌으며 해당 내용이 입력되어 있다.