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

C# DataGridView를 Excel로 내보내기: 서식 지정 포함 완벽 가이드 | IronXL

C# DataGridView 형식 지정과 함께 Excel로 내보내기: 전체 가이드: 이미지 1 - C# DataGridView 형식 지정과 함께 Excel로 내보내기

Excel 파일로 DataGridView 데이터를 내보내는 것은 Windows Forms 개발에서 가장 일반적인 작업 중 하나입니다. 영업 보고서, 재고 기록 또는 고객 목록 등 테이블 데이터를 표시하는 비즈니스 애플리케이션을 구축할 때, 사용자는 버튼을 클릭하여 공유하거나 추가로 분석할 수 있는 적절히 포맷된 Excel 파일을 기대합니다. 도전 과제는 각 최종 사용자 컴퓨터에 Microsoft Excel 설치에 의존하지 않고, 메모리 누수 및 조용히 파손되는 COM interop 정리 코드를 싸우지 않고 이를 깨끗이 수행하는 것입니다. 이 가이드는 IronXL을 사용하여 C#에서 DataGridView을 Excel로 내보내는 전체 과정을 안내합니다. 프로젝트 설정부터 고급 셀 형식 지정까지 모든 내용을 다루어 최종 결과로 배포 준비가 된 코드를 제공합니다.

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

DataGridView 내보내기를 위한 Windows Forms 프로젝트를 어떻게 설정합니까?

전통적으로 DataGridView 데이터를 내보내는 방법은 마이크로소프트 상호 운용성에 의존했습니다. '참조 추가'를 열고 'COM' 탭으로 이동하여 Microsoft Excel 개체 라이브러리를 선택하고 Marshal.ReleaseComObject을 호출하는 불안정한 코드를 작성하여 메모리 누수를 피했습니다. 이 패턴은 응용 프로그램이 실행되는 모든 컴퓨터에 Microsoft Excel을 설치해야 하고, 대량의 데이터 세트로 실행이 느려지며, Office 라이선스가 없는 배포 환경에서는 종종 COMException 오류를 발생시킵니다. Microsoft의 Office Automation에 대한 가이드는 서버 측 및 자동화된 시나리오에는 타사 라이브러리를 명시적으로 추천합니다.

IronXL은 이러한 모든 종속성을 제거합니다. 이는 Microsoft Office나 COM 등록 없이 .xlsx, .xls, .csv, .ods 파일을 읽고 쓰는 순수한 .NET 라이브러리입니다. NuGet을 통해 설치하고 즉시 코드 작성을 시작할 수 있습니다.

NuGet을 통한 IronXL 설치하기

Visual Studio에서 .NET 10을 대상으로 새 Windows Forms App 프로젝트를 생성합니다. DataGridView 컨트롤과 Button을 폼 표면에 추가합니다. 버튼 이름을 btnExport로 지정하고 레이블 'Excel로 내보내기'를 부여합니다. 그런 다음 NuGet 패키지 관리자 콘솔을 열고 실행합니다:

Install-Package IronXl.Excel
Install-Package IronXl.Excel
SHELL

폼 파일 상단에 필요한 네임스페이스를 추가하세요:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

이 두 네임스페이스는 Excel 워크북 읽기 및 쓰기에 필요한 모든 IronXL 유형과, DataTable 객체를 내보내기 파이프라인에 연결하는 데 필요한 표준 System.Data 유형을 포함합니다.

DataGridView 컨트롤에 샘플 데이터를 로드하는 방법은 무엇입니까?

내보내기 로직을 작성하기 전에, 대표 데이터를 사용하여 DataGridView에 데이터를 채웁니다. 데이터 소스로 DataTable를 바인딩하기에 적합한 장소는 Form1_Load 이벤트입니다. 실제 애플리케이션에서는 데이터베이스를 쿼리하거나 서비스를 호출해야 합니다. 여기서는 하드코드된 DataTable가 구조를 명확히 설명합니다. Microsoft Docs의 DataGridView 컨트롤 개요는 컨트롤이 데이터 소스를 관리하는 방법에 대한 추가적인 맥락을 제공합니다.

DataTable을 DataGridView에 바인딩하기

void Form1_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ProductID", typeof(int));
    dt.Columns.Add("ProductName", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("Stock", typeof(int));

    dt.Rows.Add(1, "Laptop", 999.99m, 50);
    dt.Rows.Add(2, "Mouse", 29.99m, 200);
    dt.Rows.Add(3, "Keyboard", 79.99m, 150);
    dt.Rows.Add(4, "Monitor", 349.99m, 75);
    dt.Rows.Add(5, "Webcam", 89.99m, 120);

    dataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ProductID", typeof(int));
    dt.Columns.Add("ProductName", typeof(string));
    dt.Columns.Add("Price", typeof(decimal));
    dt.Columns.Add("Stock", typeof(int));

    dt.Rows.Add(1, "Laptop", 999.99m, 50);
    dt.Rows.Add(2, "Mouse", 29.99m, 200);
    dt.Rows.Add(3, "Keyboard", 79.99m, 150);
    dt.Rows.Add(4, "Monitor", 349.99m, 75);
    dt.Rows.Add(5, "Webcam", 89.99m, 120);

    dataGridView1.DataSource = dt;
}
$vbLabelText   $csharpLabel

이 코드는 이벤트 핸들러 서명의 상위 수준 문장 스타일을 사용합니다. DataTable는 정수, 문자열, 소수, 정수의 네 가지 타입이 있는 열을 가지며, IronXL은 Excel 워크북을 쓸 때 이를 보존합니다. 타입이 지정된 컬럼은 중요합니다. IronXL이 숫자 컬럼을 텍스트가 아닌 숫자 셀로 작성하기 때문에, 사용자는 Excel에서 값을 재포맷하지 않고 정렬하고 합산할 수 있습니다.

C# DataGridView 형식 지정과 함께 Excel로 내보내기: 전체 가이드: 이미지 2 - 폼을 위한 UI

DataGridViewDataTable 열 이름에서 자동으로 열 머리글 행을 렌더링합니다. 내보내기를 할 때 Excel 파일에 그 머리글 행이 보존되기를 원하며, 이는 내보내기 코드가 데이터 행과 별개로 머리글을 처리해야 함을 의미합니다 — 다음 섹션에서 이를 정확히 다룹니다.

생산 환경에서는 DataTable가 Entity Framework, Dapper, ADO.NET 또는 기타 데이터 액세스 레이어에서 나오더라도 동일한 패턴이 적용됩니다. 내보내기 코드는 DataGridView 바인딩에서 분리되어 있어 내보내기 로직을 수정하지 않고 데이터 소스를 교체할 수 있습니다.

DataGridView 데이터를 Excel 파일로 내보내는 방법은 무엇입니까?

핵심 내보내기 로직은 버튼 클릭 핸들러 내에서 실행됩니다. IronXL은 WorkSheet의 열을 셀에 자동으로 매핑하는 LoadFromDataTable 메서드를 제공합니다. 가장 깔끔한 방식은 DataGridView에서 DataTable을 추출하여 직접 전달하는 것입니다. .xlsx 형식을 기반으로 하는 Open XML SDK는 Microsoft에 의해 문서화되어 있으며, 프로그램적 생성에 대해 IronXL과 같은 순수한 .NET 솔루션이 Interop보다 뛰어난 이유를 설명합니다.

버튼 클릭 내보내기 핸들러

void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable dt = new DataTable();

        foreach (DataGridViewColumn column in dataGridView1.Columns)
            dt.Columns.Add(column.HeaderText);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.IsNewRow) continue;

            DataRow dataRow = dt.NewRow();
            for (int i = 0; i < dataGridView1.Columns.Count; i++)
                dataRow[i] = row.Cells[i].Value ?? DBNull.Value;

            dt.Rows.Add(dataRow);
        }

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        worksheet.Name = "Product Data";

        worksheet.LoadFromDataTable(dt, true);

        string outputPath = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
            "DataGridViewExport.xlsx"
        );

        workbook.SaveAs(outputPath);
        MessageBox.Show($"Exported successfully to:\n{outputPath}", "Export Complete",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable dt = new DataTable();

        foreach (DataGridViewColumn column in dataGridView1.Columns)
            dt.Columns.Add(column.HeaderText);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.IsNewRow) continue;

            DataRow dataRow = dt.NewRow();
            for (int i = 0; i < dataGridView1.Columns.Count; i++)
                dataRow[i] = row.Cells[i].Value ?? DBNull.Value;

            dt.Rows.Add(dataRow);
        }

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        worksheet.Name = "Product Data";

        worksheet.LoadFromDataTable(dt, true);

        string outputPath = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
            "DataGridViewExport.xlsx"
        );

        workbook.SaveAs(outputPath);
        MessageBox.Show($"Exported successfully to:\n{outputPath}", "Export Complete",
            MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
$vbLabelText   $csharpLabel

C# DataGridView 형식 지정과 함께 Excel로 내보내기: 전체 가이드: 이미지 3 - 생성된 Excel 파일

LoadFromDataTable(dt, true) 호출은 DataTable와 IronXL에게 Excel의 첫 번째 행으로 열 이름을 쓰도록 지시하는 부울 플래그를 받습니다. 이는 머리글 셀이 됩니다. 사용자의 데스크톱에 하드코드된 경로 대신 Environment.SpecialFolder.Desktop을 사용하여 워크북을 저장하여 코드가 사용자 계정 간 포터블하게 만듭니다.

null 확인 (?? DBNull.Value) prevents a NullReferenceException는 셀에 값이 없을 때 발생합니다. 옵션 필드가 비어 있을 수 있는 실제 데이터에서 중요합니다. IronXL은 문자열 'DBNull' 대신 빈 셀로 DBNull을 쓰므로 출력이 깔끔하게 유지됩니다.

Excel 파일에서 데이터를 DataGridView으로 다시 읽는 것에 대한 자세한 내용은 IronXL DataTable 문서를 참조하세요. 이 문서는 역작업과 멀티시트 워크북의 Excel을 DataSet으로 변환하는 방법을 다룹니다.

내보낸 Excel 파일에 전문적인 서식을 적용하는 방법은 무엇입니까?

Excel 파일의 일반 데이터는 기능적으로 유용하지만, 전문적으로 서식화된 출력 -- 굵은 헤더, 내용에 맞춘 열 너비, 교대로 배경 색상이 다양한 행 -- 은 사용자가 신뢰하는 도구와 즉시 내보내어 즉시 서식을 다시 설정하도록 하는 도구의 차이를 만들어냅니다. IronXL은 글꼴, 색상, 테두리, 숫자 형식 및 정렬을 다룰 수 있는 풍부한 셀 스타일링 API를 제공합니다. 스프레드시트 스타일에 대한 OOXML 사양은 IronXL이 쓰는 기본 형식을 정의하여, 출력이 모든 호환 애플리케이션에서 정확하게 열림을 보장합니다.

헤더 스타일 적용 및 교대로 행 색상

void ExportWithFormatting(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    worksheet.Name = "Formatted Export";

    string[] headers = { "ID", "Product Name", "Price", "Stock" };

    // Write and style header row
    for (int col = 0; col < headers.Length; col++)
    {
        char colLetter = (char)('A' + col);
        string cellAddress = $"{colLetter}1";

        worksheet.SetCellValue(0, col, headers[col]);
        worksheet[cellAddress].Style.Font.Bold = true;
        worksheet[cellAddress].Style.Font.Height = 12;
        worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
        worksheet[cellAddress].Style.Font.Color = "#FFFFFF";
        worksheet[cellAddress].Style.HorizontalAlignment =
            IronXl.Styles.HorizontalAlignment.Center;
    }

    // Write data rows with alternating background colors
    int rowIndex = 1;
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow) continue;

        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(rowIndex, col,
                row.Cells[col].Value?.ToString() ?? string.Empty);
        }

        if (rowIndex % 2 == 0)
        {
            string rangeAddress = $"A{rowIndex + 1}:D{rowIndex + 1}";
            worksheet[rangeAddress].Style.SetBackgroundColor("#D6DCE5");
        }

        rowIndex++;
    }

    // Format the Price column as currency
    worksheet["C2:C100"].Style.Format = "$#,##0.00";

    // Auto-fit column widths
    worksheet.AutoSizeColumn(0);
    worksheet.AutoSizeColumn(1);
    worksheet.AutoSizeColumn(2);
    worksheet.AutoSizeColumn(3);

    string outputPath = Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
        "FormattedExport.xlsx"
    );

    workbook.SaveAs(outputPath);
    MessageBox.Show("Formatted export complete.", "Done",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}
void ExportWithFormatting(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    worksheet.Name = "Formatted Export";

    string[] headers = { "ID", "Product Name", "Price", "Stock" };

    // Write and style header row
    for (int col = 0; col < headers.Length; col++)
    {
        char colLetter = (char)('A' + col);
        string cellAddress = $"{colLetter}1";

        worksheet.SetCellValue(0, col, headers[col]);
        worksheet[cellAddress].Style.Font.Bold = true;
        worksheet[cellAddress].Style.Font.Height = 12;
        worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
        worksheet[cellAddress].Style.Font.Color = "#FFFFFF";
        worksheet[cellAddress].Style.HorizontalAlignment =
            IronXl.Styles.HorizontalAlignment.Center;
    }

    // Write data rows with alternating background colors
    int rowIndex = 1;
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.IsNewRow) continue;

        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(rowIndex, col,
                row.Cells[col].Value?.ToString() ?? string.Empty);
        }

        if (rowIndex % 2 == 0)
        {
            string rangeAddress = $"A{rowIndex + 1}:D{rowIndex + 1}";
            worksheet[rangeAddress].Style.SetBackgroundColor("#D6DCE5");
        }

        rowIndex++;
    }

    // Format the Price column as currency
    worksheet["C2:C100"].Style.Format = "$#,##0.00";

    // Auto-fit column widths
    worksheet.AutoSizeColumn(0);
    worksheet.AutoSizeColumn(1);
    worksheet.AutoSizeColumn(2);
    worksheet.AutoSizeColumn(3);

    string outputPath = Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
        "FormattedExport.xlsx"
    );

    workbook.SaveAs(outputPath);
    MessageBox.Show("Formatted export complete.", "Done",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}
$vbLabelText   $csharpLabel

C# DataGridView 형식 지정과 함께 Excel로 내보내기: 전체 가이드: 이미지 4 - 생성된 형식 지정 Excel 파일의 출력

서식 코드에는 여러 기술이 적용됩니다. 머리글 행은 파란색 배경 (#4472C4), 흰색 텍스트, 12포인트 굵은 글꼴 및 가운데 정렬을 가지며, 이는 표준 비즈니스 스프레드시트 스타일입니다. 데이터 행은 짝수 행마다 흰색과 연한 회색 (#D6DCE5)이 번갈아 나타나며, 사용자가 넓은 표를 읽을 때 위치를 잃지 않기 쉽게 만듭니다. 가격 열은 Excel의 내장 통화 형식 ($#,##0.00)을 사용하여, 스프레드시트에서 달러 기호와 소수 두 자리와 함께 값을 표시합니다. 기본 수치 데이터는 변경되지 않습니다. AutoSizeColumn는 각 열을 가장 긴 값에 맞춰 맞추므로 내용이 잘리지 않습니다.

셀 테두리 스타일링, 조건부 서식, 데이터 유효성 검사 규칙을 사용하여 이 패턴을 더 확장할 수 있습니다. 기업 템플릿과 일치해야 하는 보고서의 경우, 내보낸 파일을 조정 없이 바로 인쇄할 수 있도록 페이지 레이아웃 및 인쇄 영역을 설정할 수 있습니다.

대규모 데이터셋 처리 및 성능 튜닝 방법은 무엇입니까?

수천 개의 행에 DataGridView이 바인딩될 때, 셀을 하나씩 반복하는 것은 눈에 띄게 느려집니다. 두 가지 최적화로 성능을 크게 개선할 수 있습니다. 첫째, 각 셀 SetCellValue 호출 대신 LoadFromDataTable를 사용하세요. 둘째, 데이터 소스가 DataTable인 경우 DataGridView 행에서 값을 추출하지 말고 IronXL에 직접 전달하세요.

void ExportLargeDataset(DataTable sourceTable)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    // Direct DataTable load -- fastest path for large data
    worksheet.LoadFromDataTable(sourceTable, true);

    // Apply header styling after load
    int colCount = sourceTable.Columns.Count;
    for (int col = 0; col < colCount; col++)
    {
        char colLetter = (char)('A' + col);
        worksheet[$"{colLetter}1"].Style.Font.Bold = true;
        worksheet[$"{colLetter}1"].Style.SetBackgroundColor("#4472C4");
        worksheet[$"{colLetter}1"].Style.Font.Color = "#FFFFFF";
    }

    workbook.SaveAs(Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
        "LargeExport.xlsx"
    ));
}
void ExportLargeDataset(DataTable sourceTable)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    // Direct DataTable load -- fastest path for large data
    worksheet.LoadFromDataTable(sourceTable, true);

    // Apply header styling after load
    int colCount = sourceTable.Columns.Count;
    for (int col = 0; col < colCount; col++)
    {
        char colLetter = (char)('A' + col);
        worksheet[$"{colLetter}1"].Style.Font.Bold = true;
        worksheet[$"{colLetter}1"].Style.SetBackgroundColor("#4472C4");
        worksheet[$"{colLetter}1"].Style.Font.Color = "#FFFFFF";
    }

    workbook.SaveAs(Path.Combine(
        Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
        "LargeExport.xlsx"
    ));
}
$vbLabelText   $csharpLabel

10,000개 이상의 행이 있는 데이터 세트의 경우 백그라운드 스레드에서 내보내기를 실행하여 UI를 반응성 있게 유지합니다. 내보내기 로직을 Task.Run에 감싸고 MessageBox.Show 호출을 UI 스레드로 Invoke를 사용하여 다시 전달합니다. IronXL은 별도의 WorkBook 인스턴스에서 쓰기 작업에 대해 스레드 안전성이 보장되므로 필요한 경우 여러 내보내기를 동시에 실행할 수 있습니다.

추가 성능 리소스:

IronXL을 마이크로소프트 상호 운용성과 비교하여 DataGridView 내보내기를 처리하는 방법은 무엇입니까?

많은 개발자가 Office와 함께 제공되고 추가 패키지가 필요하지 않기 때문에 Microsoft Excel Interop으로 시작합니다. 그러나, Interop은 실제 환경에서 금방 부각되는 비용이 있습니다. 다음 표는 주요 차이점을 요약합니다:

DataGridView 내보내기를 위한 IronXL 대 Microsoft Excel Interop
기능 IronXL 마이크로소프트 상호 운용성
Microsoft Excel 설치 필요 아니요
서버 / 클라우드 환경에서 작동 아니오 (Microsoft에서 지원하지 않음)
COM 객체 정리가 필요 아니요 네 (Marshal.ReleaseComObject)
대용량 데이터 세트 성능 빠름 (순수 .NET) 느림 (COM 마샬링 오버헤드)
설치 방법 NuGet COM 참조 / Office 설치
지원되는 .NET 버전 .NET 4.6.2 -- .NET 10 .NET Framework 전용 (제한적)
XLSX, CSV, ODS 지원 Excel을 통한 XLSX/XLS만

Microsoft의 자체 문서에서는 안정성과 라이선스 문제를 이유로 서버 또는 서비스 계정에서 Office Interop을 사용하는 것을 경고하고 있습니다. IronXL은 Azure App Service, Windows Service 호스트, Docker 컨테이너와 같은 모든 헤드리스 환경에서 Excel과 같은 데스크톱 응용 프로그램을 실행할 수 없는 곳에서도 올바르게 작동합니다.

Interop을 이미 사용하는 팀이 마이그레이션을 원하는 경우 IronXL의 API는 대다수의 WorkBookWorkSheet 작업이 직접 변환될 수 있도록 충분히 가깝게 매핑됩니다. IronXL 마이그레이션 가이드는 일반적인 Interop 패턴과 그에 해당하는 IronXL 대안을 다룹니다.

다음 단계는 무엇입니까?

IronXL을 사용하여 Excel로 DataGridView 데이터를 내보내려면 NuGet Install-Package와 몇 줄의 코드만 필요합니다. 취약한 COM interop 접근 방식을 깨끗하고 유지 가능한 솔루션으로 대체하여 모든 배포 환경에서 작동합니다. 여기서 다루는 기술(기본 내보내기, 서식 있는 출력, 대규모 데이터 세트 최적화 및 비교 표)은 프로덕션 윈도우 폼 응용 프로그램에서 이 기능을 제공하는 데 필요한 모든 것을 제공합니다.

여기서 관련 기능을 탐구하십시오:

프로젝트에서 전체 기능 세트를 테스트하기 위해 무료 IronXL 체험판을 시작하거나 프로덕션 배포를 준비할 때 IronXL 라이선스 옵션을 검토하십시오.

자주 묻는 질문

C#에서 DataGridView의 데이터를 Excel로 내보내는 방법은 무엇인가요?

NuGet 통해 IronXL 설치하고, DataGridView에서 DataTable을 추출하고, WorkBook과 WorkSheet를 생성한 다음, worksheet.LoadFromDataTable(dt, true)를 호출하고, workbook.SaveAs를 사용하여 저장하세요.

DataGridView를 Excel로 내보낼 때 사용할 수 있는 서식 옵션은 무엇입니까?

IronXL 굵은 글꼴, 배경색, 글꼴 색상, 가로 정렬, 숫자 형식(예: 통화), 열 자동 크기 조정, 테두리 스타일 및 조건부 서식을 지원합니다.

DataGridView 데이터를 내보내려면 Microsoft Excel이 설치되어 있어야 하나요?

아니요. IronXL 은 Microsoft Office나 컴퓨터에 COM 등록이 필요 없는 순수 .NET 라이브러리로, Excel 파일을 생성합니다.

DataGridView를 Excel로 내보낼 때 헤더 스타일을 지정할 수 있나요?

예. 헤더 행을 작성한 후, 주소를 이용하여 각 헤더 셀에 접근하고 Style.Font.Bold, Style.SetBackgroundColor, Style.Font.Color 속성을 설정하십시오.

DataGridView에서 Excel로 내보낼 때 행 색상을 번갈아 가며 적용하려면 어떻게 해야 하나요?

DataGridView 행을 반복하면서 행 인덱스를 추적하고, 짝수 행의 경우 worksheet[rangeAddress].Style.SetBackgroundColor를 사용하여 선택한 16진수 색상으로 범위 스타일을 적용합니다.

DataGridView를 Excel로 내보낼 때 대용량 데이터셋은 어떻게 처리해야 하나요?

셀을 하나씩 반복하는 대신 기본 DataTable을 worksheet.LoadFromDataTable에 직접 전달하십시오. 데이터 세트가 매우 큰 경우 Task.Run을 사용하여 백그라운드 스레드에서 내보내기를 실행하십시오.

IronXL DataGridView 내보내기에서 Microsoft Excel Interop과 어떻게 비교됩니까?

IronXL Microsoft Excel을 필요로 하지 않고, 서버 및 클라우드 환경에서 작동하며, COM 정리 코드가 필요 없고, 대규모 데이터 세트에서 훨씬 빠른 성능을 보여줍니다.

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

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

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

Iron Support Team

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