C#에서 Excel 워크시트를 여러 파일로 분할

발행: (2026년 1월 6일 오전 11:59 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Source:

소개

현대 데이터 처리 워크플로우에서 다중 워크시트 Excel 파일을 개별 단일 워크시트 파일로 분할하는 작업은 매우 흔한 요구 사항입니다—부서별 재무 보고서를 배포하거나, 학급별 학생 성적표를 공유하거나, 구분된 데이터 세트를 정리할 때 등입니다. 수동으로 분할하면 번거롭고 시간이 많이 소요되며, 인간 오류가 발생하기 쉬워 데이터 일관성에 문제가 생깁니다.

C# 로 이 프로세스를 자동화하면 생산성을 크게 높일 수 있으며, Free Spire.XLS—가볍고 강력한 .NET 라이브러리—를 사용하면 Microsoft Office 설치 없이도 훨씬 간단하게 구현할 수 있습니다.

이 가이드는 C#와 Free Spire.XLS를 사용하여 Excel 워크시트를 분할하는 전체 과정을 단계별로 안내합니다. 다음 내용을 다룹니다:

  • 프로젝트 설정
  • 핵심 코드 구현
  • 고급 사용 사례
  • 대체 라이브러리

기술 스택 개요

  • Language: C#
  • Frameworks: .NET Framework 4.0+, .NET Core 3.1+, .NET 5+
  • Library: Free Spire.XLS (NuGet)
  • IDE: Visual Studio 2019+, Rider, VS Code, 또는 모든 C# IDE

Free Spire.XLS를 선택해야 하는 이유

Free Spire.XLS는 원활한 Excel 파일 조작을 위해 설계된 무료 .NET Excel 컴포넌트입니다. 전통적인 솔루션인 Microsoft Office Interop과 비교했을 때 세 가지 주요 장점이 있습니다:

장점설명
Office 의존성 없음서버나 클라이언트 머신에 Microsoft Office를 설치할 필요 없이 작동하여 호환성 및 라이선스 문제를 제거합니다.
풍부한 기능Excel 파일(.xls & .xlsx)을 생성, 편집, 변환, 분할할 수 있으며 데이터, 수식, 스타일, 서식을 완전히 유지합니다.
높은 성능배치 처리 및 서버‑사이드 자동화를 위해 최적화되어 있어 Interop보다 속도와 안정성이 뛰어납니다.

전제 조건

따라 하려면 개발 환경이 다음 요구 사항을 충족하는지 확인하십시오:

  • .NET Framework 4.0+ / .NET Core 3.1+ / .NET 5+
  • 무료 Spire.XLS NuGet 패키지 (최신 버전 권장)
  • Visual Studio 2019+ / Rider / VS Code (또는 기타 C# IDE)

단계별 구현

1. 프로젝트 설정

  1. IDE에서 새 C# 콘솔 앱 프로젝트를 생성합니다.

  2. NuGet을 통해 Free Spire.XLS를 설치합니다:

    • 패키지 관리자 콘솔

      Install-Package FreeSpire.XLS
    • GUI 방법
      프로젝트를 오른쪽 클릭 → NuGet 패키지 관리 → “FreeSpire.XLS” 검색 → 설치.

2. 핵심 코드 구현 (상세 설명 포함)

핵심 로직은 다음과 같습니다:

  1. 원본 Excel 파일을 로드합니다.
  2. 워크시트를 순회합니다.
  3. 각 워크시트를 새 워크북에 복사합니다.
  4. 새 파일을 저장합니다.
using Spire.Xls;
using System;
using System.IO;

namespace ExcelWorksheetSplitter
{
    class Program
    {
        static void Main(string[] args)
        {
            // -------------------------------------------------
            // 1️⃣ Configure file paths (update to match your environment)
            // -------------------------------------------------
            string sourceFilePath = "source.xlsx"; // Path to your multi‑worksheet Excel file
            string outputDirectory = Path.Combine(
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                "SplitWorksheets");

            try
            {
                // -------------------------------------------------
                // 2️⃣ Load the source workbook
                // -------------------------------------------------
                using (Workbook sourceWorkbook = new Workbook())
                {
                    sourceWorkbook.LoadFromFile(sourceFilePath);

                    // -------------------------------------------------
                    // 3️⃣ Ensure the output folder exists
                    // -------------------------------------------------
                    Directory.CreateDirectory(outputDirectory);

                    // -------------------------------------------------
                    // 4️⃣ Iterate through all worksheets
                    // -------------------------------------------------
                    for (int i = 0; i  file.EndsWith(".xlsx") || file.EndsWith(".xls"))
                                   .ToArray();

    foreach (string file in excelFiles)
    {
        Console.WriteLine($"Processing file: {Path.GetFileName(file)}");
        SplitSingleExcelFile(file,
            Path.Combine(outputFolder, Path.GetFileNameWithoutExtension(file)));
    }
}

// Reusable method to split a single Excel file
static void SplitSingleExcelFile(string sourceFilePath, string outputFolder)
{
    using (Workbook wb = new Workbook())
    {
        wb.LoadFromFile(sourceFilePath);
        Directory.CreateDirectory(outputFolder);

        foreach (Worksheet sheet in wb.Worksheets)
        {
            using (Workbook newWb = new Workbook())
            {
                newWb.Worksheets.Clear();
                newWb.Worksheets.AddCopy(sheet);
                newWb.SaveToFile(
                    Path.Combine(outputFolder, $"{sheet.Name}.xlsx"),
                    ExcelVersion.Version2016);
            }
        }
    }
}

대체 라이브러리 (비교)

라이브러리장점단점추천 용도
Free Spire.XLSOffice 의존 없음, 전체 포맷 지원, 쉬운 API무료 버전의 일부 제한 사항빠른 개발, 서버‑사이드 자동화
EPPlus오픈소스, 경량, .xlsx에 적합.xls 지원 안 함간단한 .xlsx 분할 작업
NPOI오픈소스, 워터마크 없음, 전체 포맷 지원학습 곡선이 가파름고급 Excel 조작
Microsoft Office Interop네이티브 Office 통합Office 설치 필요, 서버에서 불안정데스크톱 전용 앱
ClosedXML직관적인 API, 오픈소스.xls 지원 안 함현대적인 .xlsx 워크플로우

C#와 Free Spire.XLS를 사용한 Excel 워크시트 분할은 반복적인 데이터 처리 작업을 자동화하는 간단하고 효율적인 방법입니다. 서버‑사이드 자동화 도구를 만들든 데스크톱 앱을 만들든, Free Spire.XLS는 Excel 워크플로우를 간소화하는 신뢰할 수 있는 솔루션을 제공합니다.

Back to Blog

관련 글

더 보기 »

C#에서 간단한 코드로 Excel 읽기

소개 일상적인 C 개발에서 Excel 데이터를 처리하는 것은 거의 모든 개발자가 마주하는 요구 사항입니다. 사용자 데이터를 가져오든, 보고서를 생성하든...

C#에서 RTF를 PDF로 변환하기

개요 RTF(Rich Text Format)는 문서 편집 및 데이터 교환에 널리 사용되는 크로스‑플랫폼 형식입니다. 반면 PDF는 문서 배포에 이상적입니다.