C#에서 DataTable를 가져오고 내보내는 방법
IronXL은 단일 메서드 호출로 Excel 통합 문서와 DataSet 간 변환을 수행합니다. LoadWorkSheetsFromDataSet()을 사용하여 DataSet을 통합 문서로 가져오고, ToDataSet()을 사용하여 통합 문서를 DataSet로 내보낼 수 있으며, 시트와 테이블 간의 매핑이 자동으로 수행됩니다.
DataSet는 여러 관련 테이블, 관계 및 제약 조건을 포함하는 데이터의 메모리 내 표현입니다. 데이터베이스, XML 및 기타 소스의 데이터를 처리하는 데 사용됩니다. C#에서 Excel 파일을 다룰 때, DataSet는 데이터 기반 애플리케이션과 통합되는 친숙한 .NET 구조를 제공합니다.
DataTable는 DataSet 내의 행과 열로 구성된 단일 테이블을 나타냅니다. IronXL은 각 Excel 워크시트를 해당 DataTable에 자동으로 매핑하며, 변환 과정에서 열 머리글과 데이터 유형을 유지합니다.
빠른 시작: 워크북을 System.Data.DataSet 즉시 내보내기
워크북을 DataSet로 변환하는 데는 메서드 호출 한 번이면 충분합니다. 이 예제는 DataTable을 사용하여 전체 워크북(각 시트)을 ToDataSet로 내보내며, 선택적으로 첫 번째 행 헤더를 인식합니다.
최소 워크플로 (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을 불러오는 포괄적인 예시입니다:
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")
이 방법은 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은 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
내보낸 DataSet는 Excel에서 정의된 관계와 제약 조건을 유지하므로, Excel Interop에 의존하지 않고도 복잡한 Excel 데이터 구조를 다루기에 적합합니다.
추가 DataSet/DataTable 기능
IronXL은 DataSet 및 DataTable을 사용할 때 다음과 같은 고급 기능을 제공합니다:
데이터 유형 처리
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); 이 코드는 시트와 테이블을 자동으로 매핑하여 전체 통합 문서를 변환합니다.

