푸터 콘텐츠로 바로가기
IRONXL 사용하여

IronXL 사용하여 C#으로 Excel 보고서를 만드는 방법

Creating Excel Reports in C# with IronXL

C#에서 Excel 보고서를 작성하는 것은 현대 비즈니스와 .NET 애플리케이션에서 기본적인 요구 사항입니다. 재무 제표, 판매 분석 또는 인벤토리 대시보드를 생성하든, Excel 파일과 Excel 스프레드시트 만드는 프로세스를 자동화하면 수작업을 줄이고 오류를 줄이는 시간 절약을 할 수 있습니다.

IronXL은 개발자가 Microsoft Office, MS Excel 또는 전통적인 Interop 종속성 없이 C#에서 Excel 보고서를 생성할 수 있는 강력하고 직관적인 솔루션을 제공합니다. OLE Automation 또는 Excel 애플리케이션에 의존하는 접근 방식과는 달리, IronXL은 필요할 때 코드 한 줄만으로 Excel 워크북과 Excel 데이터를 직접 생성할 수 있게 해줍니다. 이 가이드에서는 IronXL로 Excel 보고서를 작성하는 방법을 가르쳐 드리며, 쉽게 따라할 수 있는 샘플 코드를 통해 본인의 프로젝트에 쉽게 구현할 수 있도록 합니다!

IronXL이란 무엇이며 왜 Excel 파일 생성에 사용해야 할까요?

IronXL은 개발자가 Excel 스프레드시트를 생성하고 읽으며 C# 또는 비주얼 베이직 소스 코드에서 직접 Excel 파일을 조작할 수 있게 해주는 .NET Excel 라이브러리입니다. Microsoft Office Interop 접근 방식이 전체 Excel 응용 프로그램 또는 Open XML SDK를 통한 리버스 엔지니어링에 의존하는 것과 달리, IronXL은 Windows, Linux, macOS 및 클라우드 환경에서 Excel 설치나 타사 종속성 없이 작동합니다. 이것은 서버 측 Excel 보고서, 자동화된 워크플로우, .NET Core 또는 .NET Framework에서 구축된 웹 응용 프로그램에 이상적입니다.

수동 Excel 프로세스, 오래된 라이브러리 또는 다양한 XML 네임스페이스를 탐색해야 하는 Open XML 생산성 도구 워크플로우에서 전환하는 팀에게 IronXL은 직관적인 API를 제공합니다. 이는 XML 파일과 다양한 폴더를 포함하는 ZIP 파일인 현대 XLSX 파일과 레거시 XLS 파일을 모두 지원합니다. 새 Excel 워크북 생성, 여러 워크시트 조작, 외부 코드에서 Excel 데이터를 로드하는 것 등 IronXL은 기본 형식을 이해할 필요 없이 과정을 크게 단순화합니다.

Excel 파일 생성을 위한 IronXL 시작하기

Excel 보고서를 생성하기 위한 IronXL 설정은 몇 분이면 완료됩니다. Visual Studio의 NuGet 패키지 관리자를 통해 라이브러리를 설치하세요:

Install-Package IronXl.Excel

오늘 IronXL을 다운로드하고 Excel 보고서 생성을 자동화합니다.

설치 후 첫 번째 Excel 보고서를 생성하는 데는 몇 줄의 코드만 필요합니다:

using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");
$vbLabelText   $csharpLabel

이 코드는 형식화된 제목이 있는 새 Excel 보고서 파일을 생성합니다. 익숙한 셀 참조 구문(reportSheet["A1"])은 개발자가 데이터를 나타낼 정확한 위치를 지정하기 쉽게 해 주며, 이는 수동으로 Excel을 사용하는 것과 유사합니다.

산출

C#에서 IronXL을 사용하여 Excel 보고서를 만드는 방법: 이미지 1 - Excel 출력 예시

여러 소스에서 데이터 로드하기

현실 세계의 Excel 보고서는 거의 정적 데이터를 사용하지 않습니다. IronXL은 다양한 형식, API, 새로운 DataTable 소스 또는 여러 XML 파일에서 Excel 데이터를 통합하는 데 탁월합니다. 이것은 서버 측 또는 웹 응용 프로그램에서 동적 C# Excel 보고서 생성에 완벽합니다.

데이터베이스 통합

데이터베이스 기반 Excel 보고서의 경우 IronXL은 ADO.NET DataTables와 원활하게 작동합니다:

using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlDataAdapter adapter = new SqlDataAdapter(
        "SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
    adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
    sheet[$"A{row}"].Value = dataRow["ProductName"];
    sheet[$"B{row}"].Value = dataRow["Quantity"];
    sheet[$"C{row}"].Value = dataRow["Revenue"];
    row++;
}
$vbLabelText   $csharpLabel

이 접근 방식은 SQL Server에서 엑셀 보고서로 직접 판매 데이터를 로드합니다. DataTable 통합은 기존 데이터 접근 코드를 수정 없이 사용할 수 있게 합니다. 더 복잡한 시나리오의 경우 SQL 데이터베이스에서 Excel을 로드하는 방법을 확인하십시오.

컬렉션 작업

메모리 내 데이터, API 응답에서 가져온 Excel 데이터 또는 새로운 DataTable의 경우, 컬렉션은 Microsoft Excel 또는 타사 종속성을 사용하지 않고도 Excel 워크시트를 쉽게 채울 수 있습니다:

var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
var salesRecords = new List<SalesRecord>
{
    new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
    new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
    sheet[$"A{i+2}"].Value = salesRecords[i].Product;
    sheet[$"B{i+2}"].Value = salesRecords[i].Units;
    sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}
$vbLabelText   $csharpLabel

이 방법을 통해 C#에서 직접 .NET 애플리케이션 내에서 Excel 보고서를 생성할 수 있으며, 여러 워크시트 또는 XLSX 파일을 생성하는 과정이 수동 OLE Automation 또는 XML 파일 역공학보다 훨씬 간단합니다.

산출

C#에서 IronXL을 사용하여 Excel 보고서를 만드는 방법: 이미지 2 - 데이터 출력 예제 워크시트

전문적인 Excel 보고서 서식 만들기

원시 데이터만으로는 전문적인 보고서를 만들 수 없습니다. IronXL은 세련되고 비즈니스에 적합한 Excel 파일을 생성하기 위한 포괄적인 셀 서식 옵션을 제공합니다. 다음 코드는 IronXL을 사용하여 얼마나 쉬운지 보여줍니다:

using IronXL;
using IronXl.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
using IronXL;
using IronXl.Styles;

class Program
{
    static void Main(string[] args)
    {
        // Create a new workbook
        var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new worksheet
        var sheet = workbook.CreateWorkSheet("MySheet");
        // Add header values
        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Quantity";
        sheet["C1"].Value = "Price";
        // Add sample data rows
        sheet["A2"].Value = "Laptop";
        sheet["B2"].Value = 5;
        sheet["C2"].Value = 1299.99;
        sheet["A3"].Value = "Headphones";
        sheet["B3"].Value = 15;
        sheet["C3"].Value = 199.50;
        sheet["A4"].Value = "Keyboard";
        sheet["B4"].Value = 10;
        sheet["C4"].Value = 89.99;
        sheet["A5"].Value = "Monitor";
        sheet["B5"].Value = 7;
        sheet["C5"].Value = 249.00;
        // Header formatting
        var headerRange = sheet["A1:C1"];
        headerRange.Style.Font.Bold = true;
        headerRange.Style.SetBackgroundColor("#4472C4");
        headerRange.Style.Font.Color = "#FFFFFF";
        headerRange.Style.BottomBorder.Type = BorderType.Thick;
        // Number formatting for currency
        sheet["C:C"].FormatString = "$#,##0.00";
        // Alternating row colors for readability
        for (int row = 2; row <= 10; row++)
        {
            if (row % 2 == 0)
            {
                sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
            }
        }
        // Column width adjustment
        sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
        sheet.Columns[2].Width = 12 * 256;
        // Add borders around data
        var dataRange = sheet["A1:C10"];
        dataRange.Style.TopBorder.Type = BorderType.Thin;
        dataRange.Style.RightBorder.Type = BorderType.Thin;
        dataRange.Style.BottomBorder.Type = BorderType.Thin;
        dataRange.Style.LeftBorder.Type = BorderType.Thin;
        // Save the workbook to a file
        workbook.SaveAs("MyWorkbook.xlsx");
    }
}
$vbLabelText   $csharpLabel

이 형식 옵션은 기본 데이터를 전문 보고서로 변환합니다. 스타일 API는 글꼴 및 색상에서 테두리 및 정렬에 이르기까지 모든 것을 다루며, Excel 보고서의 외관을 완전히 제어할 수 있습니다. 고급 서식 요구 사항의 경우 중요한 데이터를 자동으로 강조 표시하는 조건부 서식을 탐색하십시오.

C#에서 IronXL을 사용하여 Excel 보고서를 만드는 방법: 이미지 3 - 서식이 지정된 Excel 출력

동적 Excel 보고서 계산을 위한 수식 사용

Excel의 강력함은 그 수식에서 나옵니다. IronXL은 Excel 수식 생성을 완전히 지원합니다:

// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
    sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";
$vbLabelText   $csharpLabel

공식 지원에는 SUM, AVERAGE, IF, VLOOKUP 등 모든 표준 Excel 기능이 포함되어 있습니다. IronXL은 수식 종속성과 계산 순서를 자동으로 처리하여, 복잡한 계산으로 Excel 보고서 생성을 간단하게 만듭니다. IronXL의 수학 함수에 대해 더 알아보기.

C#에서 IronXL을 사용하여 Excel 보고서를 만드는 방법: 이미지 4 - 공식을 포함한 출력 예시

템플릿 기반 보고서

반복적인 Excel 보고서 또는 표준화된 워크북을 위해 IronXL은 템플릿 기반 생성을 지원하여 개발자가 Open XML SDK, rels 파일 또는 다양한 폴더를 다루지 않고도 템플릿에서 Excel 파일을 만들 수 있도록 합니다:

// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
    if (cell.Text.Contains("{{CompanyName}}"))
        cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
    if (cell.Text.Contains("{{ReportDate}}"))
        cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");
$vbLabelText   $csharpLabel

이 접근 방식은 일관된 서식을 유지하면서 동적 콘텐츠를 업데이트하므로 월간 보고서나 표준화된 문서에 적합합니다.

C#에서 IronXL을 사용하여 Excel 보고서를 만드는 방법: 이미지 5 - 보고서 템플릿 대 템플릿을 사용해 생성된 Excel 파일

모범 사례 및 문제 해결

Excel 보고서 생성을 구현할 때는 다음 팁을 염두에 두십시오:

  • 큰 파일의 메모리 사용: 전체 데이터를 불러오기보다는 데이터를 청크로 처리 (대형 Excel 파일에 대한 Microsoft's 권장 사항)
  • 날짜 형식 문제: Excel 호환 날짜를 위해 DateTime.ToOADate()를 사용하십시오 (Excel 날짜 시스템 설명)
  • 파일 잠금 오류: 항상 using 문이나 새로운 MemoryStream 접근법을 사용하여 Excel 객체를 적절히 폐기하십시오.
  • 스타일 누락: 일부 스타일 속성은 먼저 배경색을 설정해야 합니다

결론

IronXL은 Excel 보고서 생성을 번거로운 수작업 프로세스에서 자동화되고 신뢰할 수 있는 워크플로우로 변화시킵니다. 직관적인 API, 크로스 플랫폼 지원, 포괄적인 기능 세트를 통해 개발자는 몇 분 만에 전문적인 Excel 보고서를 만들 수 있으며, 이는 몇 시간이 소요되던 것보다 더 빠릅니다. 쉬운 데이터 통합, 강력한 형식 옵션, 공식 지원의 조합으로 IronXL은 Excel 보고서를 다루는 C# 개발자에게 필수 도구입니다. 관심이 있는 개발자를 위해 IronXL은 무료 체험판과 기업 및 개인을 위한 추가 라이센스 옵션을 제공합니다.

지금 바로 IronXL으로 시작하세요.
green arrow pointer

자주 묻는 질문

C#에서 IronXL 무엇에 사용되나요?

IronXL 개발자가 Excel 파일을 쉽게 생성, 편집 및 읽을 수 있도록 지원하는 강력한 C# 라이브러리입니다. 고급 서식, 수식 및 데이터 통합 ​​기능을 통해 전문적인 Excel 보고서를 생성할 수 있습니다.

IronXL 사용하여 Excel 보고서를 어떻게 만들 수 있나요?

IronXL 사용하여 Excel 보고서를 생성하려면 강력한 API를 활용하여 C# 환경 내에서 데이터를 추가하고, 셀 서식을 지정하고, 수식을 적용하고, 데이터베이스와 통합할 수 있습니다.

IronXL Excel 보고서 생성을 위해 어떤 기능을 제공하나요?

IronXL 셀 서식 지정, 수식 적용, 데이터 유효성 검사, 차트 생성 및 원활한 데이터베이스 통합과 같은 기능을 제공하여 포괄적인 Excel 보고서를 생성할 수 있도록 지원합니다.

IronXL 데이터베이스 연동을 지원합니까?

네, IronXL 데이터베이스 통합을 지원하므로 데이터베이스에서 직접 데이터를 가져와 Excel 보고서에 통합할 수 있어 데이터 분석 및 보고를 간소화할 수 있습니다.

IronXL 복잡한 Excel 수식을 처리할 수 있습니까?

IronXL 다양한 Excel 수식을 처리할 수 있으므로 개발자는 Excel 보고서 내에서 복잡한 계산을 수행하고 데이터 처리를 자동화할 수 있습니다.

IronXL 사용하여 Excel 셀의 서식을 지정할 수 있습니까?

IronXL 다양한 서식 지정 기능을 제공하여 글꼴 스타일, 색상, 테두리 등을 포함한 셀 모양을 사용자 지정하여 시각적으로 매력적인 Excel 보고서를 만들 수 있도록 합니다.

IronXL 사용하여 Excel에서 차트를 만들 수 있나요?

네, IronXL 사용하면 Excel 스프레드시트 내에서 다양한 차트를 만들 수 있어 데이터를 시각적으로 표현하고 보고서의 해석 가능성을 높일 수 있습니다.

IronXL 엑셀 보고서 생성 과정을 어떻게 간소화합니까?

IronXL C# 프로그래밍 환경 내에서 데이터 입력, 서식 지정, 계산 및 출력을 간소화하는 포괄적인 기능 세트를 제공하여 Excel 보고서 생성 프로세스를 단순화합니다.

IronXL 대규모 데이터 세트를 효율적으로 처리할 수 있습니까?

IronXL 성능에 최적화되어 있어 대규모 데이터 세트를 효율적으로 처리할 수 있으므로 속도나 안정성을 저해하지 않고 복잡한 보고서를 생성하는 데 이상적입니다.

IronXL 어떤 프로그래밍 언어를 위해 설계되었습니까?

IronXL C#과의 호환성을 위해 특별히 설계되었으며, .NET Framework 에서 개발하는 개발자에게 원활한 통합 및 기능을 제공합니다.

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

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me