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

How to Create an Excel File in C# (.NET Tutorial)

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

IronXL은 Microsoft Office 또는 Interop에 대한 종속성 없이 XLSX 스프레드시트를 프로그래밍 방식으로 생성, 읽기 및 편집할 수 있는 강력한 C# 및 .NET Excel 라이브러리입니다. 이 플랫폼은 .NET 8, .NET 9, .NET Core, .NET Framework를 지원하며 Windows, Linux, macOS, Azure 및 AWS에서 실행됩니다.

이 튜토리얼에서는 C#을 사용하여 완벽한 Excel 통합 문서를 만드는 방법을 단계별 코드 예제와 함께 안내합니다. 셀 값 설정, 서식 적용, 수식 추가, XLSX, CSV 등으로 내보내기 등의 작업을 수행합니다.

빠른 시작: 엑셀 파일 만들기

IronXL을 사용하면 새 Excel 파일을 순식간에 만들 수 있습니다. 형식을 선택하고, 시트를 추가하고, 셀 값을 설정한 다음 저장하기만 하면 됩니다. 직관적인 API 호출과 호환성 문제 없이 XLSX 파일을 가장 빠르게 생성하는 방법입니다.

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

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

    WorkBook book = IronXl.WorkBook.Create(IronXl.ExcelFileFormat.XLSX); book.CreateWorkSheet("Sheet1")["A1"].Value = "Hello World"; book.SaveAs("MyFile.xlsx");
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

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

    arrow pointer

IronXL이란 무엇이며, 엑셀 파일 생성에 IronXL을 사용하는 이유는 무엇일까요?

IronXL은 직관적인 C# 및 VB Excel API로, 뛰어난 성능으로 .NET 환경에서 Excel 스프레드시트 파일을 읽고 편집하고 생성할 수 있도록 해줍니다. 기존 방식과 달리 Microsoft Office를 설치하거나 Excel Interop을 사용할 필요가 없어 배포가 더 간단하고 안정적입니다.

IronXL은 .NET 9, .NET 8, .NET Core, .NET Framework, Xamarin, 모바일, Linux, macOS 및 Azure 환경을 완벽하게 지원합니다.

IronXL의 특징

  • .NET 개발팀의 직접적인 지원을 제공합니다.
  • Microsoft Visual Studio를 이용한 빠른 설치
  • 개발은 무료입니다. $799 라이선스

엑셀 파일을 빠르게 만들고 저장하는 방법은 무엇인가요?

NuGet을 통해 IronXL을 설치 하거나 DLL을 직접 다운로드하십시오 . WorkBook 클래스는 모든 Excel 작업의 시작점이며, WorkSheet 클래스는 개별 시트를 조작하는 메서드를 제공합니다 — 전체 단계별 진행은 아래의 1단계에서 시작됩니다.


How Do I Install the IronXL C# Library?

Visual Studio의 NuGet 패키지 관리자를 통해 IronXL을 설치하거나 패키지 관리자 콘솔을 사용하십시오.

Install-Package IronXl.Excel

프로젝트 메뉴를 통해 또는 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 NuGet 패키지 관리자에 액세스할 수 있습니다.

Visual Studio 프로젝트 메뉴에 NuGet 패키지 관리 옵션이 표시됩니다.

**그림 3** - *프로젝트 메뉴를 통해 NuGet 패키지 관리자에 접근하기*

솔루션 탐색기 컨텍스트 메뉴에 NuGet 패키지 관리 옵션이 표시됩니다.

**그림 4** - *솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭하여 나타나는 상황별 메뉴*


패키지 목록에서 IronXl.Excel을 검색하여 설치를 클릭하십시오.


NuGet 패키지 관리자에 IronXl.Excel Install-Package 준비가 완료되었습니다.

**그림 5** – *NuGet 패키지 관리자를 통해 IronXl.Excel 설치하기*

또는 IronXL DLL을 직접 다운로드하여 Solution Explorer > References > Browse for IronXL.dll를 통해 프로젝트에 참조로 추가하십시오.

IronXL 웹사이트 다운로드 페이지에는 설치 지침과 다운로드 버튼이 있습니다.

**그림 6** – *공식 웹사이트에서 IronXL 라이브러리를 다운로드하세요*

IronXL은 Microsoft Office 또는 Excel Interop 설치가 필요하지 않습니다. Windows, Linux, macOS 및 클라우드 환경을 포함한 모든 .NET 지원 플랫폼에서 실행됩니다.


.NET 프로젝트는 어떻게 설정하나요?

IronXL은 콘솔 앱, ASP.NET 웹 앱, API 또는 데스크톱 도구 등 모든 유형의 .NET 프로젝트 와 호환됩니다. 아래 예시는 ASP.NET 웹 애플리케이션을 사용하지만, 모든 프로젝트 템플릿에서 과정은 동일합니다.

다음 단계를 따라 ASP.NET 웹사이트를 만드세요.

  1. Visual Studio를 엽니다.
  2. 파일 > 새 프로젝트를 클릭합니다.
  3. 프로젝트 유형 목록에서 Visual C# 아래의 웹을 선택합니다.
  4. ASP.NET 웹 애플리케이션 선택


    Visual Studio의 새 프로젝트 대화 상자에서 ASP.NET 웹 애플리케이션이 선택되어 있습니다.

    그림 1Create new ASP.NET project

  5. 확인을 클릭하세요
  6. 웹 양식 템플릿을 선택합니다.

    ASP.NET 프로젝트 템플릿 선택 화면에서 웹 폼 옵션이 표시됩니다.

    그림 2Select Web Forms template

  7. 확인을 클릭하세요

프로젝트 준비가 완료되면 IronXL을 설치하여 Excel 파일을 프로그래밍 방식으로 생성해 보세요.


How Do I Create an Excel Workbook in C#?

IronXL을 사용하여 새 Excel 통합 문서를 만드는 데 필요한 코드는 단 한 줄입니다.

using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
using IronXL;

// Create workbook with XLSX format (recommended for modern Excel)
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Alternative: Create legacy XLS format for older Excel versions
WorkBook legacyWorkbook = WorkBook.Create(ExcelFileFormat.XLS);
$vbLabelText   $csharpLabel

WorkBook.Create 메서드는 XLS (Excel 97-2003) 및 XLSX (Excel 2007+) 형식을 모두 지원합니다. XLSX 형식은 성능 향상 및 파일 크기 축소에 권장됩니다.

  • XLSX : 모든 최신 Excel 버전(2007 이상)에 권장 - 파일 크기가 작고 성능이 향상됩니다.
  • XLS : Excel 97~2003 버전과의 호환성을 위한 기존 형식입니다.

워크북에 워크시트를 추가하려면 어떻게 해야 하나요?

워크시트를 추가하는 것은 간단합니다.

// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
// Create a worksheet with custom name for budget tracking
WorkSheet budgetSheet = workbook.CreateWorkSheet("2020 Budget");

// Add multiple worksheets for different purposes
WorkSheet salesSheet = workbook.CreateWorkSheet("Sales Data");
WorkSheet inventorySheet = workbook.CreateWorkSheet("Inventory");

// Access existing worksheet by name
WorkSheet existingSheet = workbook.GetWorkSheet("2020 Budget");
$vbLabelText   $csharpLabel

워크북에는 하나 이상의 워크시트가 포함되어 있습니다. 각 워크시트는 행과 열로 구성되며, 행과 열이 교차하는 부분에 셀이 있습니다. CreateWorkSheet 메서드를 사용하여 워크북에 새 시트를 추가하십시오.

  • CreateWorkSheet("name"): 주어진 탭 이름으로 새 시트를 추가
  • GetWorkSheet("name"): 이름으로 기존 시트를 검색
  • 통합 문서 내에서 시트 이름은 고유해야 합니다.

엑셀에서 셀 값을 설정하는 방법은 무엇인가요?

셀 값을 수동으로 설정하려면 어떻게 해야 하나요?

개별 셀 값 설정은 직관적인 Excel과 유사한 구문을 사용합니다.

// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
// Set month names in first row for annual budget spreadsheet
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";

// Set different data types - IronXL handles conversion automatically
workSheet["A2"].Value = 1500.50m;  // Decimal for currency
workSheet["A3"].Value = DateTime.Now;  // Date values
workSheet["A4"].Value = true;  // Boolean values
$vbLabelText   $csharpLabel

Cell.Value 속성은 문자열, 숫자, 날짜 및 불리언을 포함한 다양한 데이터 유형을 수용합니다. IronXL은 데이터 유형에 따라 셀 형식을 자동으로 지정합니다.

셀 값을 동적으로 설정하는 방법은 무엇인가요?

동적 값 설정은 데이터 기반 애플리케이션에 적합합니다.

// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
// Initialize random number generator for sample data
Random r = new Random();

// Populate cells with random budget data for each month
for (int i = 2; i <= 11; i++)
{
    // Set different budget categories with increasing ranges
    workSheet[$"A{i}"].Value = r.Next(1, 1000);     // Office Supplies
    workSheet[$"B{i}"].Value = r.Next(1000, 2000);  // Utilities
    workSheet[$"C{i}"].Value = r.Next(2000, 3000);  // Rent
    workSheet[$"D{i}"].Value = r.Next(3000, 4000);  // Salaries
    workSheet[$"E{i}"].Value = r.Next(4000, 5000);  // Marketing
    workSheet[$"F{i}"].Value = r.Next(5000, 6000);  // IT Services
    workSheet[$"G{i}"].Value = r.Next(6000, 7000);  // Travel
    workSheet[$"H{i}"].Value = r.Next(7000, 8000);  // Training
    workSheet[$"I{i}"].Value = r.Next(8000, 9000);  // Insurance
    workSheet[$"J{i}"].Value = r.Next(9000, 10000); // Equipment
    workSheet[$"K{i}"].Value = r.Next(10000, 11000); // Research
    workSheet[$"L{i}"].Value = r.Next(11000, 12000); // Misc
}

// Alternative: Set range of cells with same value
workSheet["A13:L13"].Value = 0; // Initialize totals row
$vbLabelText   $csharpLabel

문자열 보간 ($"A{i}")을 사용하면 셀 참조가 동적으로 이루어집니다. Range 인덱서는 개별 셀과 범위를 모두 지원합니다.

데이터베이스에서 엑셀로 데이터를 가져오는 방법은 무엇인가요?

데이터베이스에서 엑셀로 데이터를 불러오는 것은 흔히 요구되는 작업입니다.

using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
using System.Data;
using System.Data.SqlClient;
using IronXL;

// Database connection setup for retrieving sales data
string connectionString = @"Data Source=ServerName;Initial Catalog=SalesDB;Integrated Security=true";
string query = "SELECT ProductName, Quantity, UnitPrice, TotalSales FROM MonthlySales";

// Create DataSet to hold query results
DataSet salesData = new DataSet();

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
    // Fill DataSet with sales information
    adapter.Fill(salesData);
}

// Write headers for database columns
workSheet["A1"].Value = "Product Name";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Unit Price";
workSheet["D1"].Value = "Total Sales";

// Apply header formatting
workSheet["A1:D1"].Style.Font.Bold = true;
workSheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
workSheet["A1:D1"].Style.Font.FontColor = "#FFFFFF";

// Populate Excel with database records
DataTable salesTable = salesData.Tables[0];
for (int row = 0; row < salesTable.Rows.Count; row++)
{
    int excelRow = row + 2; // Start from row 2 (after headers)

    workSheet[$"A{excelRow}"].Value = salesTable.Rows[row]["ProductName"].ToString();
    workSheet[$"B{excelRow}"].Value = Convert.ToInt32(salesTable.Rows[row]["Quantity"]);
    workSheet[$"C{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["UnitPrice"]);
    workSheet[$"D{excelRow}"].Value = Convert.ToDecimal(salesTable.Rows[row]["TotalSales"]);

    // Format currency columns
    workSheet[$"C{excelRow}"].FormatString = "$#,##0.00";
    workSheet[$"D{excelRow}"].FormatString = "$#,##0.00";
}

// Add summary row with formulas
int summaryRow = salesTable.Rows.Count + 2;
workSheet[$"A{summaryRow}"].Value = "TOTAL";
workSheet[$"B{summaryRow}"].Formula = $"=SUM(B2:B{summaryRow-1})";
workSheet[$"D{summaryRow}"].Formula = $"=SUM(D2:D{summaryRow-1})";
$vbLabelText   $csharpLabel

이 예제는 데이터베이스에서 Excel 데이터를 읽고, 서식을 적용하고, 수식을 사용하여 계산하는 방법을 보여줍니다. FormatString 속성은 Excel과 마찬가지로 사용자 정의 숫자 형식을 사용할 수 있게 합니다.


엑셀 셀에 서식을 적용하는 방법은 무엇인가요?

엑셀에서 배경색을 설정하는 방법은 무엇인가요?

셀 스타일링은 가독성과 시각적 매력을 향상시킵니다.

// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
// Set header row background to light gray using hex color
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");

// Apply different colors for data categorization
workSheet["A2:A11"].Style.SetBackgroundColor("#E7F3FF"); // Light blue for January
workSheet["B2:B11"].Style.SetBackgroundColor("#FFF2CC"); // Light yellow for February

// Highlight important cells with bold colors
workSheet["L12"].Style.SetBackgroundColor("#FF0000"); // Red for totals
workSheet["L12"].Style.Font.FontColor = "#FFFFFF"; // White text

// Create alternating row colors for better readability
for (int row = 2; row <= 11; row++)
{
    if (row % 2 == 0)
    {
        workSheet[$"A{row}:L{row}"].Style.SetBackgroundColor("#F2F2F2");
    }
}
$vbLabelText   $csharpLabel

Style.SetBackgroundColor 메서드는 헥스 색상 코드를 수용합니다. 전문적인 느낌의 스프레드시트를 만들려면 배경색과 글꼴 색상을 조합하세요.

엑셀에서 테두리를 만드는 방법은 무엇인가요?

경계는 데이터 영역을 정의하고 구조를 개선하는 데 도움이 됩니다.

using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
using IronXL;
using IronXl.Styles;

// Create header border - thick bottom line to separate from data
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.TopBorder.Type = BorderType.Thick;
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.Type = BorderType.Thick;

// Add right border to last column
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = BorderType.Medium;

// Create bottom border for data area
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = BorderType.Medium;

// Apply complete border around summary section
var summaryRange = workSheet["A12:L12"];
summaryRange.Style.TopBorder.Type = BorderType.Double;
summaryRange.Style.BottomBorder.Type = BorderType.Double;
summaryRange.Style.LeftBorder.Type = BorderType.Thin;
summaryRange.Style.RightBorder.Type = BorderType.Thin;
summaryRange.Style.SetBorderColor("#0070C0"); // Blue borders
$vbLabelText   $csharpLabel

IronXL은 얇은 테두리, 중간 테두리, 두꺼운 테두리, 이중 테두리, 점선 테두리, 파선 테두리 등 다양한 테두리 유형을 지원합니다. 테두리의 각 면은 독립적으로 스타일을 지정할 수 있습니다.


How Do I Use Excel Formulas in C#?

IronXL은 자동 계산 기능을 갖춘 강력한 수식 지원 기능을 제공합니다.

// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
// Use built-in aggregation functions for ranges
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign calculated values to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;

// Or use Excel formulas directly
workSheet["A12"].Formula = "=SUM(A2:A11)";
workSheet["B12"].Formula = "=AVERAGE(B2:B11)";
workSheet["C12"].Formula = "=MAX(C2:C11)";
workSheet["D12"].Formula = "=MIN(D2:D11)";

// Complex formulas with multiple functions
workSheet["E12"].Formula = "=IF(SUM(E2:E11)>50000,\"Over Budget\",\"On Track\")";
workSheet["F12"].Formula = "=SUMIF(F2:F11,\">5000\")";

// Percentage calculations
workSheet["G12"].Formula = "=G11/SUM(G2:G11)*100";
workSheet["G12"].FormatString = "0.00%";

// Ensure all formulas calculate
workSheet.EvaluateAll();
$vbLabelText   $csharpLabel

Range 클래스는 간단한 계산을 위한 Sum(), Avg(), Max(), Min() 등의 메서드를 제공합니다. 더 복잡한 시나리오의 경우, Excel 수식을 직접 설정하기 위해 Formula 속성을 사용하십시오.

{t:(범위를 작업할 때는 원시 수식 문자열보다 IronXL의 내장된 .Sum(), .Avg(), .Max(), .Min() 메서드를 사용하는 것을 선호하십시오 — 이는 유형 안전성을 가지며 공식 구문 오류를 피할 수 있습니다.)}


워크시트 및 인쇄 속성은 어떻게 설정하나요?

IronXL을 사용하여 개별 워크시트를 보호하고, 행과 열을 고정하고, 인쇄 형식 옵션을 설정할 수 있습니다.

워크시트 속성은 어떻게 설정할 수 있나요?

워크시트를 보호하고 보기 옵션을 제어하세요.

// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
// Protect worksheet with password to prevent unauthorized changes
workSheet.ProtectSheet("SecurePassword123");

// Freeze panes to keep headers visible while scrolling
workSheet.CreateFreezePane(0, 1); // Freeze first row
// workSheet.CreateFreezePane(1, 1); // Freeze first row and column

// Set worksheet visibility options
workSheet.ViewState = WorkSheetViewState.Visible; // or Hidden, VeryHidden

// Configure gridlines and headers
workSheet.ShowGridLines = true;
workSheet.ShowRowColHeaders = true;

// Set zoom level for better viewing
workSheet.Zoom = 85; // 85% zoom
$vbLabelText   $csharpLabel

워크시트 보호 기능은 실수로 인한 수정을 방지하고, 창 고정 기능은 스크롤하는 동안 중요한 행이나 열이 계속 보이도록 유지합니다.

월별 예산 데이터가 포함된 헤더 행이 고정된 Excel 스프레드시트입니다.

**그림 7** – *스크롤하는 동안 고정된 헤더 행이 계속 표시됩니다.*

보호된 워크시트를 수정하려면 암호를 요구하는 Excel 보호 대화 상자가 나타납니다.

**그림 8** – *암호 보호는 무단 편집을 방지합니다*

페이지 및 인쇄 설정은 어떻게 구성하나요?

IronXL을 통해 전문적인 인쇄 옵션을 설정하세요:

using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
using IronXl.Printing;

// Define print area to exclude empty cells
workSheet.SetPrintArea("A1:L12");

// Configure page orientation for wide data
workSheet.PrintSetup.PrintOrientation = PrintOrientation.Landscape;

// Set paper size for standard printing
workSheet.PrintSetup.PaperSize = PaperSize.A4;

// Adjust margins for better layout (in inches)
workSheet.PrintSetup.LeftMargin = 0.5;
workSheet.PrintSetup.RightMargin = 0.5;
workSheet.PrintSetup.TopMargin = 0.75;
workSheet.PrintSetup.BottomMargin = 0.75;

// Configure header and footer
workSheet.PrintSetup.HeaderMargin = 0.3;
workSheet.PrintSetup.FooterMargin = 0.3;

// Scale to fit on one page
workSheet.PrintSetup.FitToPage = true;
workSheet.PrintSetup.FitToHeight = 1;
workSheet.PrintSetup.FitToWidth = 1;

// Add print headers/footers
workSheet.Header.Center = "Monthly Budget Report";
workSheet.Footer.Left = DateTime.Now.ToShortDateString();
workSheet.Footer.Right = "Page &P of &N"; // Page numbering
$vbLabelText   $csharpLabel

PrintSetup 클래스는 Excel의 인쇄 설정에 해당하는 포괄적인 인쇄 구성 옵션을 제공합니다.

가로 방향 및 A4 용지 크기 설정이 표시된 Excel 인쇄 미리보기입니다.

**그림 9** – *가로 방향 및 사용자 지정 여백을 적용한 인쇄 미리보기*


엑셀 통합 문서를 어떻게 저장하나요?

워크북을 다양한 형식으로 저장하세요.

// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
// Save as XLSX (recommended for modern Excel)
workBook.SaveAs("Budget.xlsx");

// Save as XLS for legacy compatibility
workBook.SaveAs("Budget.xls");

// Save as CSV for data exchange
workBook.SaveAsCsv("Budget.csv");

// Save as JSON for web applications
workBook.SaveAsJson("Budget.json");

// Save to stream for web downloads or cloud storage
using (var stream = new MemoryStream())
{
    workBook.SaveAs(stream);
    byte[] excelData = stream.ToArray();
    // Send to client or save to cloud
}

// Save with specific encoding for international characters
workBook.SaveAsCsv("Budget_UTF8.csv", System.Text.Encoding.UTF8);
$vbLabelText   $csharpLabel

IronXL은 XLSX, XLS, CSV, TSV 및 JSON을 포함한 다양한 내보내기 형식을 지원합니다. SaveAs 메서드는 파일 확장자로부터 형식을 자동으로 결정합니다.

  • XLSX / XLS : 서식, 수식 및 여러 시트가 포함된 완전한 Excel 형식
  • CSV : 데이터 교환용 일반 텍스트 파일 - 파일당 한 시트씩 내보냅니다.
  • JSON : 웹 API 및 데이터 파이프라인을 위한 구조화된 출력 형식
  • 스트림 : 메모리 내 출력용 - 웹 다운로드 또는 클라우드 저장소에 유용

요약

이 튜토리얼에서는 IronXL을 사용하여 Microsoft Office에 의존하지 않고 C#으로 Excel 파일을 만드는 방법을 설명했습니다. 여러분은 통합 문서 생성, 셀 조작, 서식 지정, 수식 사용 및 다양한 저장 옵션을 포함한 필수적인 Excel 작업에 대해 배웠습니다. IronXL의 직관적인 API를 통해 .NET 개발자는 손쉽게 Excel 자동화를 구현할 수 있습니다.

더 고급 기능을 사용하려면 셀 병합차트 생성 기능 을 살펴보세요. IronXL을 실제 운영 환경에서 사용할 준비가 되셨습니까? 무료 체험을 시작 하거나 라이선스 옵션을 확인하세요 .

다음 단계는 무엇인가요?

이제 C#으로 Excel 파일을 만들 수 있게 되었으니, IronXL의 관련 기능들을 살펴보세요.


튜토리얼 바로가기

Visual Studio 로고
### 이 튜토리얼을 C# 소스 코드로 다운로드하세요.

Excel 파일을 생성하는 데 필요한 전체 C# 소스 코드는 Visual Studio 프로젝트 파일로 제공됩니다.

다운로드
### GitHub에서 이 튜토리얼을 살펴보세요.

이 프로젝트의 소스 코드는 C# 및 VB.NET 언어로 작성되었으며 GitHub에서 확인할 수 있습니다.

이 코드를 사용하면 단 몇 분 만에 Excel 파일을 쉽게 생성할 수 있습니다. 프로젝트는 Microsoft Visual Studio 프로젝트로 저장되었지만 모든 .NET IDE와 호환됩니다.

GitHub에서 C#으로 Excel 파일 생성하기
GitHub 로고
API 문서 아이콘
### IronXL API 참조를 읽어보세요.

IronXL의 API 참조를 살펴보세요. .NET 환경에서 Excel을 완벽하게 조작하기 위한 모든 기능, 네임스페이스, 클래스, 메서드 및 속성에 대한 자세한 정보를 확인할 수 있습니다.

API 참조를 확인하세요.

자주 묻는 질문

Interop을 사용하지 않고 C#에서 Excel 파일을 생성하려면 어떻게 해야 하나요?

IronXL을 사용하면 Interop 없이도 Excel 파일을 생성할 수 있습니다. IronXL은 간단한 API를 제공합니다. WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX) 사용할 수 있습니다. 이 방법은 Microsoft Office 설치 없이 모든 .NET 플랫폼에서 작동합니다.

C#을 이용한 엑셀 파일 생성은 어떤 플랫폼을 지원하나요?

IronXL은 Windows, macOS, Linux, Docker, Azure 및 AWS 환경에서 실행되는 .NET 10, .NET 9, .NET 8, .NET Core, .NET Framework 4.6.2 이상에서 Excel 파일 생성을 지원합니다.

엑셀 파일 생성을 위한 C# 라이브러리를 어떻게 설치하나요?

Visual Studio의 NuGet 패키지 관리자를 통해 IronXL을 설치하려면 PM> Install-Package IronXl.Excel 명령을 사용하거나 nuget.org에서 직접 다운로드하십시오.

프로그램을 이용하여 새 엑셀 통합 문서를 만드는 방법은 무엇인가요?

IronXL을 사용하여 WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX) 로 통합 문서를 만든 다음 workbook.CreateWorkSheet("SheetName") 사용하여 워크시트를 추가합니다.

C#을 사용하여 Excel 워크시트의 셀 값을 설정하는 방법은 무엇입니까?

IronXL에서 직관적인 구문을 사용하여 셀 값을 설정합니다. 예: worksheet["A1"].Value = "Hello World" 또는 범위를 설정합니다. 예: worksheet["A1:A10"].Value = 100 .

엑셀 셀에 서식을 프로그램으로 적용할 수 있나요?

예, IronXL은 배경색( cell.Style.SetBackgroundColor("#FF0000") ), 테두리, 글꼴 및 숫자 서식을 포함한 포괄적인 서식 지정을 지원합니다.

C#에서 Excel 수식을 사용하는 방법은 무엇인가요?

IronXL의 Formula 속성을 사용하여 worksheet["A1"].Formula = "=SUM(B1:B10)" 와 같이 수식을 적용하거나 range.Sum() , range.Avg() 와 같은 내장 메서드를 사용할 수 있습니다.

엑셀 워크시트를 암호로 보호하려면 어떻게 해야 하나요?

IronXL에서 워크시트를 보호하려면 worksheet.ProtectSheet("YourPassword") 를 사용하여 무단 수정을 방지하십시오.

엑셀 파일의 인쇄 설정을 어떻게 구성하나요?

IronXL의 PrintSetup을 사용하여 인쇄 속성을 설정합니다. worksheet.PrintSetup.PrintOrientation = PrintOrientation.Landscapeworksheet.SetPrintArea("A1:Z100") .

엑셀 통합 문서를 여러 형식으로 저장하는 방법은 무엇인가요?

IronXL의 SaveAs 메서드를 사용하여 통합 문서를 저장하세요. XLSX 형식의 경우 workbook.SaveAs("file.xlsx") 사용하고, 다른 형식의 경우 SaveAsCsv() 또는 SaveAsJson() 사용하세요.

데이터베이스의 데이터를 엑셀 시트에 채우려면 어떻게 해야 하나요?

IronXL을 사용하여 데이터베이스에서 데이터를 가져와 worksheet["A1"].Value = dataFromDatabase 와 같은 메서드를 사용하여 셀에 설정함으로써 워크시트를 채울 수 있습니다.

C#을 사용하여 Excel 시트에서 창 고정 기능을 구현하려면 어떻게 해야 할까요?

IronXL을 사용하여 워크시트의 창을 고정하려면 worksheet.FreezePanes(1, 1) 사용하여 맨 위 행과 가장 왼쪽 열을 고정하여 탐색을 더 쉽게 할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

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/Tutorials.php
Line: 29
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/Tutorials.php
Line: 29
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/tutorials/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/Tutorials.php
Line: 29
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/tutorials/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/Tutorials.php
Line: 29
Function: render_products_view

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

Still Scrolling Icon

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

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