Excel은 데이터 관리에 매우 유용한 도구로, 많은 기업과 개발 환경에서 널리 사용됩니다. C#을 활용하면 **Excel 파일(.xlsx, .xls)**을 읽고 쓰는 작업을 자동화할 수 있습니다.
이번 글에서는 C#에서 Excel 데이터를 읽고 쓰는 방법을 단계별로 설명하고, 실무에서 활용할 수 있는 함수 예제 코드까지 제공하겠습니다.
🟢 1. C#에서 Excel을 다루는 방법
C#에서 Excel 데이터를 다루기 위해서는 Excel 관련 라이브러리를 사용해야 합니다. 대표적인 라이브러리는 다음과 같습니다.
✅ ClosedXML → 간단한 코드로 Excel 파일을 쉽게 다룰 수 있음 (추천)
✅ EPPlus → 빠르고 효율적인 Excel 데이터 처리 지원
✅ Interop.Excel → Excel 애플리케이션을 직접 제어 가능 (Excel이 설치되어 있어야 함)
이번 글에서는 ClosedXML을 활용하여 Excel 파일을 읽고 쓰는 방법을 다뤄볼게요~~!
🟡 2. ClosedXML 라이브러리 설치
ClosedXML은 Excel 파일을 쉽게 읽고 쓸 수 있도록 도와주는 라이브러리입니다.
✅ 1) NuGet 패키지 설치
- Visual Studio를 실행합니다.
- 도구(Tools) → NuGet 패키지 관리자 → 패키지 관리자 콘솔을 엽니다.
- 아래 명령어를 실행하여 ClosedXML을 설치합니다!
Install-Package ClosedXML
설치가 완료되면 ClosedXML을 활용하여 Excel 데이터를 읽고 쓸 수 있습니다.
🔵 3. C#에서 Excel 파일 생성 및 데이터 쓰기
이제 ClosedXML을 사용하여 Excel 파일을 생성하고 데이터를 저장하는 함수를 만들어 보겠습니다.
✅ 1) Excel 파일 생성 및 데이터 쓰기
using System;
using ClosedXML.Excel;
class Program
{
static void Main()
{
string filePath = "SampleData.xlsx";
CreateExcelFile(filePath);
Console.WriteLine("Excel 파일이 생성되었습니다.");
}
static void CreateExcelFile(string filePath)
{
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sheet1");
// 헤더 추가
worksheet.Cell(1, 1).Value = "ID";
worksheet.Cell(1, 2).Value = "이름";
worksheet.Cell(1, 3).Value = "나이";
// 데이터 추가
worksheet.Cell(2, 1).Value = 1;
worksheet.Cell(2, 2).Value = "김철수";
worksheet.Cell(2, 3).Value = 25;
worksheet.Cell(3, 1).Value = 2;
worksheet.Cell(3, 2).Value = "이영희";
worksheet.Cell(3, 3).Value = 30;
// 파일 저장
workbook.SaveAs(filePath);
}
}
📌 XLWorkbook() : 새로운 Excel 파일을 생성
📌 Worksheets.Add("Sheet1") : 새 워크시트를 추가
📌 worksheet.Cell(row, col).Value : 특정 셀에 값 입력
📌 workbook.SaveAs(filePath) : 파일 저장
🚀 위 코드를 실행하면 "SampleData.xlsx" 파일이 생성되며, 데이터가 저장됩니다.
🟠 4. C#에서 Excel 파일 읽으려면?
이번에는 Excel 파일에서 데이터를 읽는 함수를 만들어 보도록 하겠습니다!
✅ 1) Excel 파일에서 데이터 읽어오기
using System;
using ClosedXML.Excel;
class Program
{
static void Main()
{
string filePath = "SampleData.xlsx";
ReadExcelFile(filePath);
}
static void ReadExcelFile(string filePath)
{
var workbook = new XLWorkbook(filePath);
var worksheet = workbook.Worksheet("Sheet1");
int row = 2; // 첫 번째 행은 헤더이므로 2부터 시작
while (!worksheet.Cell(row, 1).IsEmpty())
{
int id = worksheet.Cell(row, 1).GetValue<int>();
string name = worksheet.Cell(row, 2).GetValue<string>();
int age = worksheet.Cell(row, 3).GetValue<int>();
Console.WriteLine($"ID: {id}, 이름: {name}, 나이: {age}");
row++;
}
}
}
📌 XLWorkbook(filePath) : Excel 파일을 열기
📌 worksheet.Cell(row, col).GetValue<T>() : 특정 셀의 값을 가져오기
📌 worksheet.Cell(row, col).IsEmpty() : 셀이 비어 있는지 확인
✅ 위 코드를 실행하게 되면 "SampleData.xlsx"의 데이터를 읽어와 출력하게 됩니다!
🔥 5. 실전 활용: Excel 데이터 수정 및 추가
기존 Excel 파일의 데이터를 수정하거나 새로운 데이터를 추가하는 방법도 알아보겠습니다.
✅ 1) 특정 셀 값 수정
using System;
using ClosedXML.Excel;
class Program
{
static void Main()
{
string filePath = "SampleData.xlsx";
UpdateExcelFile(filePath);
Console.WriteLine("Excel 데이터가 업데이트되었습니다.");
}
static void UpdateExcelFile(string filePath)
{
var workbook = new XLWorkbook(filePath);
var worksheet = workbook.Worksheet("Sheet1");
// 2번째 행의 나이를 28로 수정
worksheet.Cell(2, 3).Value = 28;
// 파일 저장
workbook.SaveAs(filePath);
}
}
📌 이렇게 하면 특정 셀의 데이터를 수정한 후 다시 SaveAs() 함수를 실행했을 때 Excel 파일이 업데이트됩니다.
✅ 2) 새로운 행 추가하기
using System;
using ClosedXML.Excel;
class Program
{
static void Main()
{
string filePath = "SampleData.xlsx";
AppendExcelFile(filePath);
Console.WriteLine("새로운 데이터가 추가되었습니다.");
}
static void AppendExcelFile(string filePath)
{
var workbook = new XLWorkbook(filePath);
var worksheet = workbook.Worksheet("Sheet1");
int lastRow = worksheet.LastRowUsed().RowNumber(); // 마지막 사용된 행 찾기
int newRow = lastRow + 1;
worksheet.Cell(newRow, 1).Value = 3;
worksheet.Cell(newRow, 2).Value = "박민수";
worksheet.Cell(newRow, 3).Value = 27;
workbook.SaveAs(filePath);
}
}
📌 worksheet.LastRowUsed().RowNumber() : 마지막 데이터 행 번호 가져오기
📌 worksheet.Cell(newRow, col).Value : 새로운 행에 값 추가
✅ 위 코드를 실행하면 Excel 파일에 새로운 행이 추가됩니다!
✅ 6. 정리
기능코드 설명
Excel 파일 생성 | new XLWorkbook()을 사용하여 생성 |
Excel 파일 저장 | workbook.SaveAs("파일명.xlsx") |
데이터 쓰기 | worksheet.Cell(row, col).Value = "값" |
데이터 읽기 | worksheet.Cell(row, col).GetValue<T>() |
데이터 수정 | 기존 셀의 .Value 변경 후 SaveAs() |
새로운 행 추가 | LastRowUsed().RowNumber() 활용 |
ClosedXML을 활용하면 C#에서 Excel 데이터를 쉽게 읽고 쓸 수 있으며, 실무에서도 편리하게 활용할 수 있습니다.
🚀 여러분도 직접 테스트해 보고, 필요한 기능을 프로젝트에 적용해 보세요!