본문 바로가기
카테고리 없음

C#에서 Excel 데이터 읽고 쓰는 방법

by tasiklee 2025. 2. 16.

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 패키지 설치

  1. Visual Studio를 실행합니다.
  2. 도구(Tools) → NuGet 패키지 관리자 → 패키지 관리자 콘솔을 엽니다.
  3. 아래 명령어를 실행하여 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 데이터를 쉽게 읽고 쓸 수 있으며, 실무에서도 편리하게 활용할 수 있습니다.
🚀 여러분도 직접 테스트해 보고, 필요한 기능을 프로젝트에 적용해 보세요!