C#에서 DataSet으로 가져오기 및 내보내기 방법 | IronXL

C#에서 DataTable를 가져오고 내보내는 방법

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

IronXL은 단일 메서드 호출로 Excel 통합 문서와 DataSet 간 변환을 수행합니다. LoadWorkSheetsFromDataSet()을 사용하여 DataSet을 통합 문서로 가져오고, ToDataSet()을 사용하여 통합 문서를 DataSet로 내보낼 수 있으며, 시트와 테이블 간의 매핑이 자동으로 수행됩니다.

DataSet는 여러 관련 테이블, 관계 및 제약 조건을 포함하는 데이터의 메모리 내 표현입니다. 데이터베이스, XML 및 기타 소스의 데이터를 처리하는 데 사용됩니다. C#에서 Excel 파일을 다룰 때, DataSet는 데이터 기반 애플리케이션과 통합되는 친숙한 .NET 구조를 제공합니다.

DataTableDataSet 내의 행과 열로 구성된 단일 테이블을 나타냅니다. IronXL은 각 Excel 워크시트를 해당 DataTable에 자동으로 매핑하며, 변환 과정에서 열 머리글과 데이터 유형을 유지합니다.

빠른 시작: 워크북을 System.Data.DataSet 즉시 내보내기

워크북을 DataSet로 변환하는 데는 메서드 호출 한 번이면 충분합니다. 이 예제는 DataTable을 사용하여 전체 워크북(각 시트)을 ToDataSet로 내보내며, 선택적으로 첫 번째 행 헤더를 인식합니다.

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

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

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

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

    arrow pointer

DataSet를 워크북에 로드하려면 어떻게 해야 합니까?

LoadWorkSheetsFromDataSet 메서드를 사용하여 DataSet를 통합 문서로 가져옵니다. 이 메서드에는 DataSetWorkbook 객체가 모두 필요합니다. 또한 DataSet을 통해 선택적 설정을 지원합니다. 먼저 Create 방법을 사용하여 워크북을 생성하십시오. DataSet 객체와 workbook 객체를 메서드에 전달하십시오.

:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-load.cs
using IronXL;
using System.Data;

// Create dataset
DataSet dataSet = new DataSet();

// Create workbook
WorkBook workBook = WorkBook.Create();

// Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
Imports IronXL
Imports System.Data

' Create dataset
Private dataSet As New DataSet()

' Create workbook
Private workBook As WorkBook = WorkBook.Create()

' Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
$vbLabelText   $csharpLabel

DataSet 내의 각 DataTable는 별도의 워크시트로 생성됩니다. 표 이름은 워크시트 이름으로 변환되어 데이터의 체계가 유지됩니다. 여러 데이터 소스가 있는 경우, 이를 새로운 스프레드시트 생성 또는 기존 워크시트 관리와 결합하십시오.

다음은 여러 테이블이 포함된 DataSet을 불러오는 포괄적인 예시입니다:

using IronXL;
using System.Data;

// Create a DataSet with multiple tables
DataSet salesData = new DataSet("CompanySales");

// Create and populate a products table
DataTable productsTable = new DataTable("Products");
productsTable.Co/lumns.Add("ProductID", typeof(int));
productsTable.Co/lumns.Add("ProductName", typeof(string));
productsTable.Co/lumns.Add("Price", typeof(decimal));

// Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99m);
productsTable.Rows.Add(2, "Mouse", 19.99m);
productsTable.Rows.Add(3, "Keyboard", 49.99m);

// Create and populate a sales table
DataTable salesTable = new DataTable("Sales");
salesTable.Co/lumns.Add("SaleID", typeof(int));
salesTable.Co/lumns.Add("ProductID", typeof(int));
salesTable.Co/lumns.Add("Quantity", typeof(int));
salesTable.Co/lumns.Add("Date", typeof(DateTime));

// Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now);
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1));
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2));

// Add tables to DataSet
salesData.Tables.Add(productsTable);
salesData.Tables.Add(salesTable);

// Create workbook and load DataSet
WorkBook workBook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook);

// Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx");
using IronXL;
using System.Data;

// Create a DataSet with multiple tables
DataSet salesData = new DataSet("CompanySales");

// Create and populate a products table
DataTable productsTable = new DataTable("Products");
productsTable.Co/lumns.Add("ProductID", typeof(int));
productsTable.Co/lumns.Add("ProductName", typeof(string));
productsTable.Co/lumns.Add("Price", typeof(decimal));

// Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99m);
productsTable.Rows.Add(2, "Mouse", 19.99m);
productsTable.Rows.Add(3, "Keyboard", 49.99m);

// Create and populate a sales table
DataTable salesTable = new DataTable("Sales");
salesTable.Co/lumns.Add("SaleID", typeof(int));
salesTable.Co/lumns.Add("ProductID", typeof(int));
salesTable.Co/lumns.Add("Quantity", typeof(int));
salesTable.Co/lumns.Add("Date", typeof(DateTime));

// Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now);
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1));
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2));

// Add tables to DataSet
salesData.Tables.Add(productsTable);
salesData.Tables.Add(salesTable);

// Create workbook and load DataSet
WorkBook workBook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook);

// Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx");
Imports IronXL
Imports System.Data

' Create a DataSet with multiple tables
Dim salesData As New DataSet("CompanySales")

' Create and populate a products table
Dim productsTable As New DataTable("Products")
productsTable.Columns.Add("ProductID", GetType(Integer))
productsTable.Columns.Add("ProductName", GetType(String))
productsTable.Columns.Add("Price", GetType(Decimal))

' Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99D)
productsTable.Rows.Add(2, "Mouse", 19.99D)
productsTable.Rows.Add(3, "Keyboard", 49.99D)

' Create and populate a sales table
Dim salesTable As New DataTable("Sales")
salesTable.Columns.Add("SaleID", GetType(Integer))
salesTable.Columns.Add("ProductID", GetType(Integer))
salesTable.Columns.Add("Quantity", GetType(Integer))
salesTable.Columns.Add("Date", GetType(DateTime))

' Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now)
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1))
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2))

' Add tables to DataSet
salesData.Tables.Add(productsTable)
salesData.Tables.Add(salesTable)

' Create workbook and load DataSet
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook)

' Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx")
$vbLabelText   $csharpLabel

이 방법은 SQL 데이터베이스에서 데이터를 내보내거나 여러 소스의 데이터를 Excel 형식으로 통합할 때 효과적입니다.

다양한 파일 형식의 스프레드시트를 가져오는 방법에 대해 알아보려면 '기존 스프레드시트 불러오기'를 참조하십시오.


워크북을 DataSet 형식으로 내보내려면 어떻게 해야 합니까?

ToDataSet 메서드는 통합 문서를 System.Data.DataSet로 변환하며, 이때 각 워크시트는 System.Data.DataTable가 됩니다. Excel 통합 문서에 이 메서드를 호출하여 DataSet 개체로 변환하십시오. useFirstRowAsColumnNames 매개변수는 첫 번째 행을 열 이름으로 사용할지 여부를 결정합니다.

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// 이 코드 조각은 사용할 수 없습니다!
' 이 코드 조각은 사용할 수 없습니다!
$vbLabelText   $csharpLabel

IronXL은 DataSets로 내보낼 때 데이터 유형 변환을 자동으로 처리하고 스프레드시트 구조를 유지합니다. 이는 Excel 데이터를 SQL 데이터베이스와 통합하거나 다른 .NET 애플리케이션에서 데이터를 사용할 때 유용합니다.

워크북 내보내기 및 DataSet 처리를 보여주는 고급 예시:

using IronXL;
using System;
using System.Data;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("FinancialData.xlsx");

// Export to DataSet with column headers from first row
DataSet financialDataSet = workBook.ToDataSet(useFirstRowAsColumnNames: true);

// Process each DataTable in the DataSet
foreach (DataTable table in financialDataSet.Tables)
{
    Console.WriteLine($"Processing table: {table.TableName}");
    Console.WriteLine($"Columns: {table.Co/lumns.Count}, Rows: {table.Rows.Co/unt}");

    // Iterate through columns
    foreach (DataColumn column in table.Co/lumns)
    {
        Console.WriteLine($"  Column: {column.Co/lumnName} ({column.DataType})");
    }

    // Process first 5 rows as example
    int rowCount = 0;
    foreach (DataRow row in table.Rows)
    {
        if (rowCount++ >= 5) break;

        // Access data by column name
        foreach (DataColumn col in table.Co/lumns)
        {
            Console.WriteLine($"    {col.Co/lumnName}: {row[col]}");
        }
    }
}

// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.WorkSheets["Q1Sales"];
DataTable q1Data = specificSheet.ToDataTable(useFirstRowAsColumnNames: true);

// Use the DataTable with other .NET components
// For example, bind to a DataGridView or save to database
using IronXL;
using System;
using System.Data;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("FinancialData.xlsx");

// Export to DataSet with column headers from first row
DataSet financialDataSet = workBook.ToDataSet(useFirstRowAsColumnNames: true);

// Process each DataTable in the DataSet
foreach (DataTable table in financialDataSet.Tables)
{
    Console.WriteLine($"Processing table: {table.TableName}");
    Console.WriteLine($"Columns: {table.Co/lumns.Count}, Rows: {table.Rows.Co/unt}");

    // Iterate through columns
    foreach (DataColumn column in table.Co/lumns)
    {
        Console.WriteLine($"  Column: {column.Co/lumnName} ({column.DataType})");
    }

    // Process first 5 rows as example
    int rowCount = 0;
    foreach (DataRow row in table.Rows)
    {
        if (rowCount++ >= 5) break;

        // Access data by column name
        foreach (DataColumn col in table.Co/lumns)
        {
            Console.WriteLine($"    {col.Co/lumnName}: {row[col]}");
        }
    }
}

// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.WorkSheets["Q1Sales"];
DataTable q1Data = specificSheet.ToDataTable(useFirstRowAsColumnNames: true);

// Use the DataTable with other .NET components
// For example, bind to a DataGridView or save to database
Imports IronXL
Imports System
Imports System.Data

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("FinancialData.xlsx")

' Export to DataSet with column headers from first row
Dim financialDataSet As DataSet = workBook.ToDataSet(useFirstRowAsColumnNames:=True)

' Process each DataTable in the DataSet
For Each table As DataTable In financialDataSet.Tables
    Console.WriteLine($"Processing table: {table.TableName}")
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}")

    ' Iterate through columns
    For Each column As DataColumn In table.Columns
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})")
    Next

    ' Process first 5 rows as example
    Dim rowCount As Integer = 0
    For Each row As DataRow In table.Rows
        If rowCount >= 5 Then Exit For
        rowCount += 1

        ' Access data by column name
        For Each col As DataColumn In table.Columns
            Console.WriteLine($"    {col.ColumnName}: {row(col)}")
        Next
    Next
Next

' You can also export specific worksheets as DataTables
Dim specificSheet As WorkSheet = workBook.WorkSheets("Q1Sales")
Dim q1Data As DataTable = specificSheet.ToDataTable(useFirstRowAsColumnNames:=True)

' Use the DataTable with other .NET components
' For example, bind to a DataGridView or save to database
$vbLabelText   $csharpLabel

내보낸 DataSet는 Excel에서 정의된 관계와 제약 조건을 유지하므로, Excel Interop에 의존하지 않고도 복잡한 Excel 데이터 구조를 다루기에 적합합니다.

추가 DataSet/DataTable 기능

IronXL은 DataSetDataTable을 사용할 때 다음과 같은 고급 기능을 제공합니다:

데이터 유형 처리

IronXL은 Excel과 DataSet 간 변환 과정에서 데이터 유형을 지능적으로 매핑합니다. 숫자 셀은 적절한 숫자 유형(Int32, Double, Decimal)으로, 날짜 셀은 DateTime 객체로, 텍스트 셀은 String로 변환됩니다. 변환 전에 셀 데이터 형식을 설정하여 사용자 지정할 수 있습니다.

성능 최적화

IronXL은 대용량 데이터 세트에 대해 메모리 사용량과 처리 속도를 최적화합니다. 이 라이브러리는 모든 데이터를 메모리에 불러오는 대신 데이터를 효율적으로 스트리밍합니다. 대용량 데이터를 처리하는 Enterprise 애플리케이션에 적합합니다.

다른 기능과의 통합

DataSet/DataTables 기능은 다른 IronXL 기능과 통합됩니다:

  • DataSet로 내보내기 전에 수식과 계산을 적용하십시오
  • 변환 전에 조건부 서식을 사용하여 데이터를 강조 표시하십시오
  • 시각적 보고를 위한 차트 생성 기능과 결합
  • int을 사용하여 사용자 지정 직렬화 지원
  • decimal을 통해 데이터 유효성 검사 규칙을 포함하십시오
  • 누락된 값은 double로 처리하십시오.
  • DateTime을 통해 워크시트 메타데이터 관리
  • string을 사용하여 셀 서식 유형을 유지하십시오

스프레드시트를 다양한 파일 형식으로 내보내는 방법에 대해 알아보려면 '스프레드시트 저장 또는 내보내기 방법'을 참조하십시오.

자주 묻는 질문

C#에서 Excel 통합 문서를 DataSet으로 변환하는 방법은 무엇인가요?

IronXL을 사용하면 ToDataSet() 메서드를 통해 Excel 통합 문서를 DataSet으로 변환할 수 있습니다. WorkBook.ToDataSet(useFirstRowAsColumnNames: true)를 호출하기만 하면 전체 통합 문서를 내보낼 수 있으며, 결과 DataSet에서는 각 시트가 DataTable이 됩니다.

프로그램으로 데이터셋을 엑셀 통합 문서로 가져올 수 있나요?

예, IronXL은 DataSet을 통합 문서로 가져오는 LoadWorkSheetsFromDataSet() 메서드를 제공합니다. WorkBook.Create()를 사용하여 통합 문서를 생성한 다음, DataSet과 통합 문서를 모두 이 정적 메서드에 전달하세요. 각 DataTable은 별도의 워크시트로 생성됩니다.

Excel로 가져올 때 DataTable 이름은 어떻게 되나요?

IronXL의 LoadWorkSheetsFromDataSet() 메서드를 사용하면 각 DataTable 이름이 Excel의 워크시트 이름으로 자동 변환되어 데이터 구성이 유지되고 다양한 데이터 소스를 쉽게 식별할 수 있습니다.

해당 라이브러리는 DataSet 변환 중에 열 헤더를 유지합니까?

네, IronXL은 Excel과 DataSet 간 변환 시 열 머리글과 데이터 형식을 유지합니다. useFirstRowAsColumnNames를 true로 설정하여 ToDataSet()을 사용하면 각 워크시트의 첫 번째 행이 열 머리글로 인식됩니다.

Excel과 DataSet 간 변환 시 여러 테이블은 어떻게 처리되나요?

IronXL은 Excel 워크시트를 DataSet으로 변환할 때, 그리고 그 반대로 변환할 때 각 Excel 워크시트를 해당 DataTable에 자동으로 매핑합니다. 여러 테이블이 포함된 DataSet을 가져올 경우, 각 DataTable은 통합 문서에 별도의 워크시트를 생성합니다.

Excel 파일을 DataSet으로 내보내는 데 필요한 최소한의 코드는 무엇입니까?

IronXL을 사용하여 Excel 통합 문서를 DataSet으로 내보내는 최소 코드는 단 한 줄입니다. DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); 이 코드는 시트와 테이블을 자동으로 매핑하여 전체 통합 문서를 변환합니다.

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

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

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

시작할 준비 되셨나요?
Nuget 다운로드 2,052,917 | 버전: 2026.6 just released
Still Scrolling Icon

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

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