Jak importować i eksportować DataSet/DataTable w C
IronXL konwertuje między skoroszytami Excel a DataSet za pomocą pojedynczych wywołań metod - użyj LoadWorkSheetsFromDataSet() do importu DataSet do skoroszytów i ToDataSet() do eksportu skoroszytów jako DataSet z automatycznym mapowaniem arkuszy na tabele.
DataSet to reprezentacja danych w pamięci zawierająca wiele powiązanych tabel, relacji i ograniczeń. Do pracy z danymi z baz danych, XML i innych źródeł. Pracując z plikami Excel w C#, DataSet zapewniają znajomą strukturę .NET, która integruje się z aplikacjami opartymi na danych.
DataTable reprezentuje pojedynczą tabelę z wierszami i kolumnami w ramach DataSet. IronXL automatycznie mapuje każdy arkusz Excel do odpowiedniej DataTable, zachowując nagłówki kolumn i typy danych podczas konwersji.
Szybki start: Eksportuj skoroszyt jako System.Data.DataSet natychmiast
Konwersja skoroszytu na DataSet wymaga jednego wywołania metody. Ten przykład eksportuje cały skoroszyt—każdy arkusz jako DataTable—używając ToDataSet z opcjonalnym rozpoznawaniem nagłówków w pierwszym wierszu.
-
Install IronXL with NuGet Package Manager
PM > Install-Package IronXl.Excel -
Skopiuj i uruchom ten fragment kodu.
DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do importowania i eksportowania jako DataSet
- Prepare the `DataSet` to import into a spreadsheet object
- Use the
LoadWorkSheetsFromDataSetmethod to import the `DataSet` into the workbook - Use the
ToDataSetmethod to export the workbook as a `DataSet` - Sprawdź wynik konwersji
Jak załadować DataSet do skoroszytu?
Użyj statycznej metody LoadWorkSheetsFromDataSet do importu DataSet do skoroszytu. Ta metoda wymaga zarówno obiektów DataSet jak i Workbook. Najpierw utwórz skoroszyt używając metody Create. Przekaż obiekt DataSet i obiekt workbook do metody.
: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)
Każda DataTable w ramach DataSet staje się oddzielnym arkuszem. Nazwa tabeli staje się nazwą arkusza, utrzymując organizację danych. Dla wielu źródeł danych, połącz to z tworzeniem nowych arkuszy kalkulacyjnych lub zarządzaniem istniejącymi arkuszami.
Oto kompleksowy przykład ładowania DataSet z wieloma tabelami:
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");
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")
To podejście działa dobrze przy eksportowaniu danych z baz danych SQL lub konsolidacji danych z wielu źródeł do formatu Excel.
Odwiedź Jak załadować istniejące arkusze kalkulacyjne, aby dowiedzieć się o importowaniu arkuszy z różnych formatów plików.
Jak wyeksportować skoroszyt jako DataSet?
Metoda ToDataSet konwertuje skoroszyt na System.Data.DataSet, gdzie każdy arkusz staje się System.Data.DataTable. Wywołaj tę metodę na skoroszycie Excel, aby przekonwertować go na obiekt DataSet. Parametr useFirstRowAsColumnNames określa, czy używać pierwszego wiersza jako nazw kolumn.
:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
' TEN FRAGMENT KODU JEST NIEDOSTĘPNY!
IronXL automatycznie obsługuje konwersję typów danych i utrzymuje strukturę arkusza kalkulacyjnego podczas eksportu do DataSet. To pomaga przy integrowaniu danych Excel z bazami danych SQL lub używaniu danych w innych aplikacjach .NET.
Zaawansowany przykład pokazujący eksport skoroszytu i przetwarzanie 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.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.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.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.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
Wyeksportowany DataSet utrzymuje relacje i ograniczenia zdefiniowane w Excelu, idealny do pracy z złożonymi strukturami danych Excel bez zależności od Excel Interop.
Dodatkowe funkcje DataSet/DataTable
IronXL zapewnia zaawansowane funkcje podczas pracy z DataSet i DataTable:
Obsługa typów danych
IronXL inteligentnie mapuje typy danych podczas konwersji Excel-DataSet. Komórki numeryczne stają się odpowiednimi typami numerycznymi (int, decimal, double), komórki daty stają się obiektami DateTime, a komórki tekstowe stają się strings. Dostosuj to przez ustawienie formatu danych komórek przed konwersją.
Optymalizacja wydajności
IronXL optymalizuje zużycie pamięci i szybkość przetwarzania dla dużych zbiorów danych. Biblioteka skutecznie przesyła strumieniowo dane zamiast ładować wszystko do pamięci. Odpowiednia dla aplikacji enterprise przetwarzających duże ilości danych.
Integracja z innymi funkcjami
Funkcjonalność DataSet/DataTable integruje się z innymi funkcjami IronXL:
- Zastosuj formuły i obliczenia przed eksportem do
DataSet - Użyj formatowania warunkowego, aby podkreślić dane przed konwersją
- Połącz z tworzeniem wykresów dla wizualnego raportowania
Odwiedź Jak zapisać lub eksportować arkusze kalkulacyjne, aby dowiedzieć się o eksportowaniu arkuszy do różnych formatów plików.
Często Zadawane Pytania
Jak przeksztalcic skoroszyt Excel do DataSet w C#?
Z IronXL mozesz przeksztalcic skoroszyt Excel do DataSet z uzyciem metody ToDataSet(). Po prostu wywolaj WorkBook.ToDataSet(useFirstRowAsColumnNames: true), aby wyeksportowac caly skoroszyt, gdzie kazdy arkusz staje sie DataTable w powstajacym DataSet.
Czy moge programistycznie zaimportowac DataSet do skoroszytu Excel?
Tak, IronXL udostepnia metode LoadWorkSheetsFromDataSet(), aby zaimportowac DataSet do skoroszytu. Utworz skoroszyt z uzyciem WorkBook.Create(), a nastepnie przekaż zarówno DataSet, jak i skoroszyt do tej statycznej metody. Kazda DataTable staje sie osobnym arkuszem.
Co dzieje sie z nazwami DataTable przy importowaniu do Excela?
Podczas uzywania metody LoadWorkSheetsFromDataSet() w IronXL, kazda nazwa DataTable automatycznie staje sie nazwa arkusza w Excelu, zachowujac organizacje danych i ulatwiajac identyfikacje roznych zrodel danych.
Czy biblioteka zachowuje naglowki kolumn podczas konwersji DataSet?
Tak, IronXL zachowuje naglowki kolumn i typy danych podczas konwersji miedzy Excel i DataSets. Podczas uzywania ToDataSet() z ustawionym useFirstRowAsColumnNames na true, pierwszy wiersz kazdego arkusza jest rozpoznawany jako naglowki kolumn.
Jak sa obslugiwane wiele tabel podczas konwersji miedzy Excel a DataSets?
IronXL automatycznie mapuje kazdy arkusz Excela do odpowiadajacego mu DataTable podczas konwersji do DataSet i na odwrot. Przy imporcie DataSet z wieloma tabelami, kazda DataTable tworzy osobny arkusz w skoroszycie.
Jaki jest minimalny kod potrzebny do eksportu Excela do DataSet?
Minimalny kod do eksportu skoroszytu Excel do DataSet z uzyciem IronXL to tylko jedna linia: DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); To przeksztalca caly skoroszyt z automatycznym mapowaniem arkusza do tabeli.

