C#으로 엑셀 파일을 만드는 방법

C#을 사용하여 Excel에서 고정 창을 추가하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

'Z'를 넘는 50개 이상의 행이나 열이 있는 큰 Excel 스프레드시트에서는 헤더를 표시한 상태로 데이터를 보는 것이 도전이 됩니다. C#의 Freeze Pane 기능은 특정 행과 열을 고정하여 나머지 부분이 자유롭게 스크롤되도록 하여 우아한 해결책을 제공합니다.

이 기능은 금융 보고서, 직원 데이터베이스, 품목 목록과 같은 열 헤더나 행 식별자가 지속적으로 보이기를 원하는 경우 필수적입니다. IronXL의 Excel 라이브러리를 사용하여 프로그램적으로 고정 창을 추가하여 .NET 애플리케이션의 데이터 탐색 및 사용자 경험을 향상시킬 수 있습니다.

빠른 시작: 하나의 라인에서 헤더 행 및 열 잠금

간단한 CreateFreezePane(colSplit, rowSplit) 메서드를 사용하여 몇 초 만에 행이나 열을 고정하세요. 복잡한 설정 없이 시트를 로드하고 이 메서드를 호출하면 스크롤하면서 헤더가 상단에 고정됩니다.

  1. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronXl.Excel 설치하기

    PM > Install-Package IronXl.Excel
  2. 다음 코드 조각을 복사하여 실행하세요.

    workSheet.CreateFreezePane(1, 4);
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronXL 사용 시작하기

    arrow pointer


Excel에서 고정 창을 추가하는 방법은?

고정 창은 행과 열을 고정하여, 스크롤하면서도 해당 부분이 보이도록 합니다. 이 기능은 정보를 빠르게 비교할 때 헤더 열이나 행을 고정하는 데 유용합니다. 이 기능은 대용량 데이터셋을 다루거나 광범위한 스프레드시트를 탐색할 때 컨텍스트를 유지해야 할 때 특히 유용합니다.

IronXL의 고정 창 기능은 Excel의 기본 기능을 모방하여, Excel 인터페이스에 익숙한 개발자에게 직관적으로 작동합니다. Excel Interop 솔루션과 달리, IronXL은 프로그래밍 방식으로 고정 창을 구현하는 보다 효율적이고 서버 친화적인 접근 방식을 제공합니다.

2개의 매개변수로 CreateFreezePane은 어떻게 작동합니까?

고정 창을 추가하려면 CreateFreezePane 메서드를 사용하여 고정 창이 시작될 열과 행을 지정하세요. 지정된 열과 행은 고정 창에 포함되지 않습니다. 예를 들어, workSheet.CreateFreezePane(1, 4)을 사용하면 열 A행 1에서 4까지 시작하는 고정 창이 생성됩니다.

0 기준 인덱스를 이해하는 것이 중요합니다: 열 0은 A 열, 열 1은 B 열을 나타냅니다. 행 인덱스도 동일한 패턴을 따릅니다. 이 메서드는 데이터 입력 항목을 스크롤하면서도 헤더를 보이게 유지하고자 할 때 완벽합니다.

아래 코드 예제는 B 열과 4행에서 시작하는 고정 창을 만드는 방법을 보여줍니다:

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-add.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3);

workBook.SaveAs("createFreezePanes.xlsx");
$vbLabelText   $csharpLabel

고정 창은 실제로 어떻게 보입니까?

Freeze Pane in Action

고정 창을 제거하는 방법은?

모든 기존 고정 창을 스프레드시트에서 제거하려면 RemovePane 메서드를 사용하세요. 이는 사용자 기본 설정이나 데이터 변경에 따라 뷰를 재설정하거나 다른 고정 설정을 적용해야 할 때 유용합니다.

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-remove.cs
// Remove all existing freeze or split pane
workSheet.RemovePane();
$vbLabelText   $csharpLabel

고급 고정 창 옵션은 무엇입니까?

CreateFreezePane 메서드는 사전 스크롤 기능이 있는 고정 창을 생성할 수 있는 고급 옵션을 제공합니다. 이 기능은 특정 지역의 스프레드시트를 집중적으로 살펴보면서 고정 창 기능을 유지하고자 할 때 유용합니다.

고급 고정 창에 4개의 매개변수를 언제 사용해야 합니까?

이 메서드를 사용하면 지정된 시작 열과 행을 바탕으로 고정 창을 추가할 수 있습니다. 또한 워크시트에 스크롤을 적용할 수 있습니다. 이는 서식이 지정된 Excel 보고서를 작업할 때 초기 뷰를 정확하게 제어해야 하는 경우에 특히 유리합니다.

예를 들어, workSheet.CreateFreezePane(5, 2, 6, 7)을 사용하면 열 A-E행 1-2에 걸쳐 있는 고정 창이 생성됩니다. 1열 및 5행 스크롤이 포함됩니다. 워크시트가 열리면 A-E 열, G-...1-2 행, 8-...이 표시됩니다.

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-advance.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
// The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7);

workBook.SaveAs("createFreezePanes.xlsx");
$vbLabelText   $csharpLabel

고급 고정 창은 어떻게 보입니까?

눈송이 색깔로 테두리 경계를 표시하며, 고정된 헤더와 ID 열이 있는 직원 데이터를 보여주는 Excel 고정 창 데모

고정 창의 실용적인 사용 사례

고정 창은 다양한 비즈니스 시나리오에서 매우 유용합니다:

  1. 재무 보고서: 연간 데이터를 스크롤하면서 월/분기 헤더를 보이게 유지
  2. 직원 데이터베이스: 성과 메트릭을 볼 때 직원 이름과 ID 고정
  3. 재고 관리: 제품 코드와 이름을 고정하고 재고 수준 검토
  4. 판매 대시보드: 지역별 판매 데이터를 분석하면서 제품 카테고리 가시성 유지

Excel 수식과 결합하면, 고정 창은 데이터 분석 효율성을 상당히 높일 수 있습니다.

고정 창을 포함한 데이터 보고서 구축: 전체 예제

여기에는 고정 창으로 서식이 지정된 보고서를 생성하는 방법을 보여주는 종합적인 예제가 나와 있습니다:

using IronXL;
using IronXl.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
using IronXL;
using IronXl.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
$vbLabelText   $csharpLabel

이 예제는 셀 스타일링수식이 포함된 고정 창이 전문 보고서를 생성하는 방법을 보여줍니다. 사용자가 50행의 판매 데이터를 스크롤하면서 헤더 행이 계속 보입니다.

성능 고려 사항

대형 스프레드시트에서 고정 창을 구현할 때:

  • 최적의 성능을 위해 데이터를 채운 후 고정 창을 적용하세요.
  • 고정된 섹션에서 중요한 데이터를 강조하기 위해 조건부 서식 사용을 고려하세요
  • 원활한 스크롤 성능을 보장하기 위해 대상 데이터 볼륨으로 테스트하세요

방대한 데이터 세트를 처리하는 애플리케이션의 경우 다른 형식으로 내보내기 또는 고정 창과 함께 페이지 매김 전략을 구현하는 것을 탐색하세요.

참고해 주세요하나의 고정 창 설정만 적용할 수 있습니다. 추가로 고정 창을 생성하면 이전 설정이 덮어쓰여집니다. Microsoft Excel 버전 97-2003 (.xls)에서는 고정 창이 작동하지 않습니다.

자주 묻는 질문

창 고정 기능이란 무엇이며 엑셀 스프레드시트에서 왜 유용한가요?

고정 창 기능은 특정 행과 열을 고정하여 대규모 스프레드시트를 스크롤하는 동안에도 계속 보이도록 유지합니다. 이 기능은 재무 보고서, 직원 데이터베이스 또는 재고 목록의 헤더를 표시하는 데 특히 유용합니다. IronXL은 C# 애플리케이션에서 이 기능을 프로그래밍 방식으로 구현할 수 있는 간단한 CreateFreezePane 메서드를 제공합니다.

C#에서 헤더 행을 고정하기 위해 패널 고정 기능을 빠르게 추가하는 방법은 무엇인가요?

IronXL에서는 CreateFreezePane 메서드를 사용하여 단 한 줄의 코드로 헤더 행을 고정할 수 있습니다. workSheet.CreateFreezePane(1, 4)를 호출하기만 하면 열과 행이 고정됩니다. 이렇게 하면 A열과 1~4행이 고정되고 나머지 스프레드시트는 자유롭게 스크롤할 수 있습니다.

CreateFreezePane 함수에서 매개변수를 2개 사용하는 것과 4개 사용하는 것의 차이점은 무엇인가요?

IronXL의 CreateFreezePane 메서드는 두 가지 옵션을 제공합니다. 두 개의 매개변수(colSplit, rowSplit)를 사용하면 지정된 위치에서 기본 고정 패널이 생성되고, 네 개의 매개변수를 사용하면 미리 스크롤된 위치를 가진 고정 패널을 추가하여 보기 영역을 더욱 세밀하게 제어할 수 있습니다.

고정 창을 설정할 때 0부터 시작하는 인덱싱은 어떻게 작동하나요?

IronXL의 CreateFreezePane 메서드에서는 인덱싱이 0부터 시작합니다. 0번째 열은 A열을, 1번째 열은 B열을 나타냅니다. 마찬가지로 행 인덱싱도 0부터 시작합니다. 예를 들어 CreateFreezePane(1, 4)는 A열부터 시작하여 1행부터 4행까지 포함하는 프리즈 패널을 생성합니다.

창 고정 기능을 위해 Excel Interop 대신 이 라이브러리를 사용해야 하는 이유는 무엇입니까?

IronXL은 Excel Interop 솔루션에 비해 더욱 효율적이고 서버 친화적인 접근 방식을 제공합니다. 서버에 Excel을 설치할 필요가 없으며, 대규모 데이터 세트에서 더 나은 성능을 제공하고, Excel의 기본 기능을 모방하면서 .NET 애플리케이션에 최적화된 직관적인 API를 제공합니다.

창 고정 기능을 사용하여 스프레드시트를 다른 파일 형식으로 내보낼 수 있나요?

네, IronXL의 CreateFreezePane 메서드를 사용하여 패널 고정 기능을 추가한 후에는 패널 고정 기능을 유지하면서 스프레드시트를 다양한 파일 형식으로 내보낼 수 있습니다. 라이브러리는 지원되는 Excel 형식으로 저장할 때 이러한 설정을 보존합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 12
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/ready_to_started_202509.php
Line: 19
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 489
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

시작할 준비 되셨나요?
Nuget 다운로드 1,890,100 | 버전: 2026.3 방금 출시되었습니다

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 17
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

A PHP Error was encountered

Severity: Notice

Message: Undefined index: IronXl.Excel

Filename: helpers/counter_helper.php

Line Number: 85

Backtrace:

File: /var/www/ironpdf.com/application/helpers/counter_helper.php
Line: 85
Function: _error_handler

File: /var/www/ironpdf.com/application/views/main/sections/still_scrolling_202512.php
Line: 24
Function: getTotalDonwloadNumber

File: /var/www/ironpdf.com/application/views/products/sections/three_column_docs_page_structure.php
Line: 71
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/views/products/how-to/index.php
Line: 2
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Howto.php
Line: 31
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronXl.Excel
샘플을 실행하세요 데이터가 스프레드시트로 변환되는 것을 지켜보세요.