C#에서 DataTable를 가져오기 및 내보내는 방법
IronXL은 Excel 워크북과 DataSet 사이를 단일 메서드 호출로 변환하며, LoadWorkSheetsFromDataSet()을 사용하여 DataSet을 워크북으로 가져오고, ToDataSet()을 사용하여 워크북을 DataSet으로 내보내며 시트-테이블 매핑을 자동으로 제공합니다.
DataSet은 여러 관련 테이블, 관계 및 제한 조건을 포함한 데이터의 메모리 내 표현입니다. 데이터베이스, XML 및 기타 소스의 데이터 작업에 사용됩니다. C#에서 Excel 파일을 사용할 때 DataSet는 데이터 기반 응용 프로그램과 통합되는 친숙한 .NET 구조를 제공합니다.
DataTable는 DataSet 내에서 행과 열이 있는 단일 테이블을 나타냅니다. IronXL은 각 Excel 워크시트를 해당하는 DataTable에 자동으로 매핑하며 변환 중 열 머리글과 데이터 유형을 보존합니다.
빠른 시작: 워크북을 System.Data.DataSet으로 즉시 내보내기
워크북을 DataSet으로 변환하는 데 한 메서드 호출이 필요합니다. 이 예제는 첫 행 헤더 인식을 옵션으로 하여 ToDataSet을 사용하여 각 시트를 DataTable으로 하여 전체 워크북을 내보냅니다.
최소 워크플로우(5단계)
- DataSet으로 가져오기 및 내보내기를 위한 C# 라이브러리를 다운로드하세요
DataSet을 스프레드시트 객체로 가져오도록 준비하십시오LoadWorkSheetsFromDataSet메서드를 사용하여DataSet을 워크북으로 가져오십시오ToDataSet메서드를 사용하여 워크북을DataSet으로 내보내십시오- 변환 결과를 확인하세요
워크북에 DataSet을 로드하는 방법은?
정적 LoadWorkSheetsFromDataSet 메소드를 사용하여 워크북에 DataSet을 가져옵니다. 이 메소드는 DataSet 및 Workbook 객체가 필요합니다. 또한 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)
DataSet 내의 각 DataTable는 개별 워크시트가 됩니다. 테이블 이름은 워크시트 이름이 되어 데이터 구성을 유지합니다. 여러 데이터 소스를 위해 스프레드시트 생성 또는 기존 워크시트 관리와 결합하여 사용하세요.
여기 여러 테이블이 포함된 DataSet을 로드하는 포괄적인 예가 있습니다:
:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-3.cs
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.Columns.Add("ProductID", typeof(int));
productsTable.Columns.Add("ProductName", typeof(string));
productsTable.Columns.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.Columns.Add("SaleID", typeof(int));
salesTable.Columns.Add("ProductID", typeof(int));
salesTable.Columns.Add("Quantity", typeof(int));
salesTable.Columns.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")
이 방법은 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
// 이 코드 조각은 사용할 수 없습니다!
' 이 코드 조각은 사용할 수 없습니다!
IronXL은 자동으로 데이터 유형 변환을 처리하고 데이터 세트로 내보낼 때 스프레드시트 구조를 유지합니다. SQL 데이터베이스와 Excel 데이터를 통합하거나 .NET 어플리케이션에서 데이터를 사용할 때 도움이 됩니다.
워크북 내보내기와 데이터 세트 처리를 보여주는 고급 예제:
:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-5.cs
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.Columns.Count}, Rows: {table.Rows.Count}");
// Iterate through columns
foreach (DataColumn column in table.Columns)
{
Console.WriteLine($" Column: {column.ColumnName} ({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.Columns)
{
Console.WriteLine($" {col.ColumnName}: {row[col]}");
}
}
}
// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.GetWorkSheet("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.GetWorkSheet("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
내보낸 DataSet는 Excel에서 정의된 관계 및 제한 조건을 유지하며, Excel Interop 의존성을 없애고 복잡한 Excel 데이터 구조를 처리하는 데 완벽합니다.
추가 데이터 세트/데이터 테이블 기능
IronXL은 DataSet 및 DataTable을 사용할 때 고급 기능을 제공합니다:
데이터 유형 처리
IronXL은 Excel-DataSet 변환 중에 지능적으로 데이터 유형을 매핑합니다. 숫자 셀은 적절한 숫자 유형(Int32, Double, Decimal)이 되고, 날짜 셀은 DateTime 객체가 되고, 텍스트 셀은 String이 됩니다. 변환 전에 셀 데이터 형식을 설정하여 이 기능을 맞춤 설정하세요.
성능 최적화
IronXL은 대규모 데이터 세트를 위한 메모리 사용 및 처리 속도를 최적화합니다. 라이브러리는 데이터를 메모리에 모두 불러오는 대신 효율적으로 스트리밍합니다. 대량 데이터 처리를 위한 Enterprise 어플리케이션에 적합합니다.
다른 기능과의 통합
데이터 세트/데이터 테이블 기능은 다른 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); 이 코드는 시트와 테이블을 자동으로 매핑하여 전체 통합 문서를 변환합니다.

