반응형
C#에서 엑셀 파일을 불러오기 위해서는 Microsoft Excecl Object Library를 참조로 추가해야 합니다.
Microsoft Excecl Object Library 참조 추가 방법은 [C#] 데이터를 엑셀 파일로 저장하기 를 참조하시면 됩니다.
엑셀 파일로부터 불러오기 위한 샘플 데이터로 다음과 같은 데이터를 사용하겠습니다.
엑셀 파일을 불러오는 코드는 다음과 같습니다.
using System;
using System.IO;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ImportExcel
{
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.Open(path); // 워크북 열기
workSheet = workBook.Worksheets.get_Item(1) as Excel.Worksheet; // 엑셀 첫번째 워크시트 가져오기
Excel.Range range = workSheet.UsedRange; // 사용중인 셀 범위를 가져오기
for (int row = 1; row <= range.Rows.Count; row++) // 가져온 행 만큼 반복
{
for (int column = 1; column <= range.Columns.Count; column++) // 가져온 열 만큼 반복
{
string str = (string)(range.Cells[row, column] as Excel.Range).Value2; // 셀 데이터 가져옴
Console.Write(str + " ");
}
Console.WriteLine();
}
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
부터 시작해야 합니다.
셀 가져오는 방법
workSheet.Cells[2, 1]
: A2셀을 가져옴worksheet.Cells[3,3].Value2
: C3셀의 식 또는 값을 가져옴worksheet.Cells[3,3].Fomula
: C3셀의 수식을 가져옴
셀 범위 가져오는 방법
workSheet.Range[worksheet.Cells[1, 1], worksheet.Cells[1, 3]]
: A1부터 C1까지의 셀을 가져옴workSheet.Range[“A2 : C2”]
: A2부터 C2까지의 셀을 가져옴 (엑셀 표현 그대로 사용가능)
소스 코드를 실행하게 되면 지정된 경로로부터 엑셀 파일이 불러와지고 다음과 같은 결과를 확인할 수 있습니다.
반응형
댓글