푸터 콘텐츠로 바로가기
IRONXL 사용하여
C#에서 DataGridView를 Excel로 내보내는 방법

C#에서 DataGridView를 Excel로 내보내는 방법

이 튜토리얼은 C#에서 IronXL 라이브러리를 사용하여 Windows Forms 애플리케이션에서 DataGridView 컨트롤의 데이터를 Excel 파일로 내보내는 방법에 대한 포괄적인 가이드를 제공합니다. C# 프로젝트에 Microsoft Excel 기능 통합을 원하는 초보자를 위한 원활한 경험을 만드는 데 중점을 둘 것입니다.

How to Export DataGridView to Excel in C#

  1. Visual Studio에서 C# Windows Forms 프로젝트를 만듭니다.
  2. NuGet 패키지 관리자를 사용하여 Excel 라이브러리를 설치합니다.
  3. Windows Form UI에 DataGridView와 버튼을 만듭니다.
  4. DataGridView에 데이터 소스를 연결합니다.
  5. 버튼의 클릭 이벤트 핸들러에서 데이터 내보내기 논리를 적용합니다.

IronXL 시작하기

IronXL은 .NET Framework 애플리케이션에서 엑셀 문서를 다루는 과정을 간소화하는 강력한 라이브러리입니다. 이는 대규모 엑셀 파일을 내보내고, 복잡한 데이터 소스를 처리하며, Microsoft Excel Object Library가 필요 없이 .NET 엑셀 파일 조작을 위한 포괄적인 지원을 제공합니다. 프로젝트를 설정해 봅시다.

프로젝트 설정하기

1. 새로운 Windows Forms 애플리케이션 생성

Visual Studio를 열고 새 Windows Forms 애플리케이션을 만드세요. 이것이 DataGridView 데이터를 엑셀 파일로 내보내기 위한 기능을 구현할 프로젝트의 기반이 될 것입니다.

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 1 - Visual Studio에서 새로운 Windows Forms 애플리케이션 생성

2. IronXL 설치

프로젝트에 IronXL을 쉽게 추가할 수 있습니다. Visual Studio에서 'Manage NuGet Packages' 옵션으로 이동하여 IronXL을 검색하고 설치하십시오. 이 작업은 C#에서 DataGridView를 엑셀로 내보내기 위한 모든 종속성을 처리할 것입니다.

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 2 - NuGet 패키지 관리자를 통한 IronXL 라이브러리 설치

3. 사용자 인터페이스 준비

폼에 DataGridView 컨트롤을 추가하십시오. 이 컨트롤은 우리가 내보내려고 하는 데이터를 보유할 것입니다. 또한, 내보내기 프로세스를 시작할 버튼을 추가하세요. '엑셀로 내보내기' 또는 비슷한 것으로 레이블을 지정할 수 있습니다.

내보내기 기능 구현

이 섹션에서는 Windows Forms 애플리케이션의 DataGridView에서 IronXL을 사용하여 엑셀 문서로 데이터를 내보낼 수 있는 기능을 프로그래밍하는 구체적인 방법을 설명합니다.

애플리케이션 빌드

첫째로, 폼에 DataGridView 컨트롤을 추가해야 합니다. 이 컨트롤은 데이터를 내보내기 전에 표시할 주요 구성 요소입니다. Visual Studio의 도구 상자에서 DataGridView를 폼으로 드래그하여 쉽게 추가할 수 있습니다. DataGridView 데이터를 Excel 파일로 내보내는 버튼도 추가할 수 있습니다.

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 3 - DataGridView 데이터를 Excel 파일로 내보내는 버튼 추가

다음 단계는 데이터를 DataGridView에 로드하는 것입니다. 이 데이터는 DataTable 또는 DataSet와 같은 다양한 소스에서 올 수 있습니다. 시작할 때는 새 DataSet 또는 DataTable을(를) 프로그래밍 방식으로 생성하고 샘플 데이터를 채워 어떻게 작동하는지 확인할 수 있습니다. 대안으로 외부 소스에서 데이터를 가져올 수 있습니다. 여기서 중요한 것은 데이터 소스를 DataGridView에 연결하여 데이터를 그리드에 효과적으로 연결하는 것입니다. 데이터가 DataGridView에 바인딩되면 폼의 그리드에 표시됩니다.

private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
private void BindDataToDataGridView()
{
    // Create a new DataTable.
    DataTable dataTable = new DataTable();
    // Define columns for the DataTable.
    dataTable.Columns.Add("Employee ID", typeof(int));
    dataTable.Columns.Add("Name", typeof(string));
    dataTable.Columns.Add("Department", typeof(string));
    dataTable.Columns.Add("Joining Date", typeof(DateTime));
    // Add sample data to the DataTable.
    for (int i = 1; i <= 25; i++)
    {
        dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
    }
    // Bind the DataTable to the DataGridView.
    dataGridView1.DataSource = dataTable;
}
$vbLabelText   $csharpLabel

버튼 클릭 이벤트 처리

사용자와의 주요 상호 작용 지점은 Windows Form 내의 버튼이 될 것입니다. 이 버튼은 클릭 시 내보내기 과정을 시작합니다. 이 상호작용을 설정하는 방법은 다음과 같습니다:

  • Windows Form에서는 DataGridView 데이터를 내보내는 데 전용 버튼이 있어야 합니다.
  • 이 버튼은 C# 코드에서 이벤트 핸들러 메서드를 가지고 있습니다. 이 메서드는 사용자가 버튼을 클릭할 때 트리거됩니다.
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
private void btnExport_Click(object sender, EventArgs e)
{
    // Code to export data will go here
}
$vbLabelText   $csharpLabel

DataGridView에서 데이터 내보내기

DataGridView 데이터를 내보내기 위해 먼저 IronXL 네임스페이스를 참조해야 합니다:

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

이벤트 핸들러 내에서 첫 번째 단계는 IronXL을 사용하여 새 워크북과 워크시트를 초기화하는 것입니다. 여기가 DataGridView의 데이터가 전송되는 위치입니다.

  • WorkBook 객체는 전체 Excel 파일을 나타냅니다.
  • 워크북 내의 WorkSheet은(는) Excel 파일의 개별 페이지 또는 탭과 같습니다.

여기서는 워크북을 생성하고 그 안에 워크시트를 추가합니다. 워크시트 이름은 'ExportedData'이지만 애플리케이션의 컨텍스트에 맞는 이름을 선택할 수 있습니다.

WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
$vbLabelText   $csharpLabel

Excel 시트 채우기

다음 단계는 DataGridView의 행과 열을 반복하여 각 셀의 데이터를 Excel 워크시트의 해당 셀에 복사하는 것입니다.

  • 외부 루프는 각 행을 진행하고, 내부 루프는 해당 행 내의 모든 열을 통과합니다.
  • DataGridView의 각 셀 값을 Excel 워크시트의 해당 셀에 할당합니다. 이 작업은 i(행에 대해) 및 j(열에 대해) 인덱스를 사용하여 수행됩니다.
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
    }
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    for (int j = 0; j < dataGridView1.Columns.Count; j++)
    {
        // Convert row and column index to Excel cell address format
        string cellAddress = ConvertToCellAddress(i, j);
        worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
    }
}
$vbLabelText   $csharpLabel

행 및 열 인덱스를 Excel 셀 주소로 변환하려면 다음과 같은 도우미 메서드를 사용할 수 있습니다:

private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
private string ConvertToCellAddress(int row, int column)
{
    // Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
    // The following code converts a column index to this format.
    string columnLabel = "";
    while (column >= 0)
    {
        columnLabel = (char)('A' + column % 26) + columnLabel;
        column = column / 26 - 1;
    }
    // Rows in Excel are labeled as 1, 2, 3, ..., n
    // Adding 1 because Excel is 1-based and our loop is 0-based.
    string rowLabel = (row + 1).ToString();
    return columnLabel + rowLabel;
}
$vbLabelText   $csharpLabel

Excel 파일 저장

모든 데이터 전송이 완료되면 다음 단계는 이 워크북을 Excel 파일로 저장하는 것입니다. 이 단계에서 지정된 경로에 Excel 파일이 생성됩니다.

workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
$vbLabelText   $csharpLabel

오류 처리

모든 데이터 내보내기 과정에서, 예외 처리는 애플리케이션의 안정성을 보장하는 데 필수적입니다. try-catch 블록으로 내보내기 로직을 감싸면 내보내기 도중 발생하는 문제(예를 들어 파일 액세스 권한, 데이터 형식 문제 등)를 잡고 부드럽게 처리할 수 있습니다.

try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
try
{
    // Export logic
}
catch (Exception ex)
{
    MessageBox.Show("An exception occurred: " + ex.Message);
}
$vbLabelText   $csharpLabel

산출

프로그램을 실행하면 이 인터페이스가 표시됩니다:

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 4 - 이전 코드의 출력 양식

여기에서 DataGridView에 데이터가 표시되는 것을 볼 수 있습니다. 이제 내보내기 버튼을 클릭하세요. DataGridView에서 데이터를 Excel 파일로 내보낼 것입니다.

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 5 - 성공적인 내보내기 메시지

여기서 메시지 상자가 나타나면 데이터가 Excel 파일로 내보내졌음을 확인할 수 있습니다. 여기에 출력 Excel 파일이 있습니다:

C#에서 DataGridView를 Excel로 내보내는 방법: 그림 6 - 이전 양식에서 내보낸 출력 Excel 파일

결론

이 가이드를 따르면 이제 C# 및 IronXL을 사용하여 DataGridView 데이터를 Excel 파일로 내보내는 기본적이지만 강력한 도구를 갖게 됩니다. 이 기능은 데이터 분석, 보고, 또는 단순히 서로 다른 형식 사이의 데이터 전송이 필요한 애플리케이션에 필수적입니다. DataGridView 컨트롤과 IronXL 라이브러리의 다양한 기능을 실험하면 더 맞춤화되고 고급화된 구현으로 이어질 수 있다는 것을 기억하세요.

IronXL은 기능을 탐색할 수 있는 무료 체험판을 제공합니다. 라이선스는 $liteLicense부터 시작하며, .NET 애플리케이션에서 Excel 파일 조작을 위한 신뢰할 수 있는 효율적인 솔루션을 찾고 있는 전문가 및 조직에 유익한 투자입니다.

당신의 여정은 여기서 끝나지 않습니다. IronXL의 더 많은 기능을 탐색하고 Windows Forms 응용 프로그램을 향상시키는 다른 방법을 계속 탐색하십시오. 즐거운 코딩 되세요!

자주 묻는 질문

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

IronXL 라이브러리를 사용하면 C#에서 DataGridView의 데이터를 Excel 파일로 내보낼 수 있습니다. 이를 위해서는 Windows Forms 프로젝트를 생성하고, NuGet 통해 IronXL 설치한 다음, DataGridView에서 Excel 워크시트로 데이터를 전송하는 로직을 구현해야 합니다.

DataGridView를 Excel로 내보내기 위해 설정하는 데에는 어떤 단계가 포함되나요?

이 과정에는 Windows Forms 프로젝트에 DataGridView를 생성하고, 데이터 소스에 바인딩하고, 폼에 버튼을 추가하고, IronXL 라이브러리를 사용하여 버튼 클릭 이벤트 핸들러에 내보내기 로직을 ​​작성하는 작업이 포함됩니다.

Visual Studio 프로젝트에 IronXL 설치하는 방법은 무엇인가요?

Visual Studio 프로젝트에 IronXL 설치하려면 ' NuGet 패키지 관리'로 이동하여 IronXL 검색하고 설치하세요. 그러면 DataGridView를 Excel로 내보내는 데 필요한 모든 종속성이 처리됩니다.

IronXL 사용하여 대용량 Excel 파일을 내보낼 수 있습니까?

네, IronXL 대용량 Excel 파일 내보내기를 지원하며, Microsoft Excel 개체 라이브러리 없이도 방대한 데이터 세트를 처리할 수 있는 강력한 기능을 제공합니다.

DataGridView 내보내기 튜토리얼에서 버튼의 역할은 무엇인가요?

튜토리얼의 버튼을 클릭하면 내보내기 프로세스가 시작됩니다. 이 버튼을 클릭하면 IronXL 라이브러리를 사용하여 DataGridView의 데이터를 Excel 파일로 전송하는 로직이 실행됩니다.

IronXL DataGridView에서 Excel로 데이터를 어떻게 전송하나요?

IronXL DataGridView의 행과 열을 순회하며 각 셀의 데이터를 해당 Excel 워크시트 셀에 복사하는 방식으로 데이터 전송을 용이하게 합니다.

IronXL 사용하여 내보내기 과정에서 발생하는 오류를 어떻게 관리할 수 있나요?

내보내기 로직을 try-catch 블록으로 감싸 예외를 포착하고 처리하면 오류를 관리할 수 있으며, 파일 접근 권한 문제와 같은 상황이 발생하더라도 원활한 작동을 보장할 수 있습니다.

DataGridView에서 데이터를 내보낸 후 Excel 파일로 저장하려면 어떻게 해야 하나요?

IronXL 사용하여 데이터를 Excel 워크시트로 전송한 후에는 IronXL의 SaveAs 기능을 사용하여 파일을 시스템에 저장할 수 있습니다.

IronXL 의 기능을 테스트해 볼 수 있는 무료 체험판이 있나요?

네, IronXL 무료 평가판을 제공하여 사용자가 .NET 애플리케이션에서 Excel 파일을 조작하는 기능을 살펴볼 수 있도록 합니다. 추가 개발을 위한 라이선스도 제공됩니다.

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

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

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

Iron Support Team

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