Jak importować i eksportować jako zestaw danych w języku C# | IronXL

Jak importować i eksportować DataTable w C

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

IronXL konwertuje między skoroszytami Excela a DataSet dzięki prostym wywołaniom metod - użyj LoadWorkSheetsFromDataSet() do importowania DataSet do skoroszytów i ToDataSet() do eksportowania skoroszytów jako DataSet dzięki automatycznemu odwzorowywaniu arkusza na tabelę.

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ł. Podczas pracy z plikami Excel w C#, DataSet dostarcza znaną strukturę .NET, która integruje się z aplikacjami opartymi na danych.

DataTable reprezentuje pojedynczą tabelę z wierszami i kolumnami w ramach DataSet. IronXL automatycznie odwzorowuje każdy arkusz Excela na odpowiadający mu DataTable, zachowując nagłówki kolumn i typy danych podczas konwersji.

Szybki start: Eksportuj skoroszyt jako System.Data.DataSet natychmiast

Konwersja skoroszytu do DataSet wymaga jednego wywołania metody. Ten przykład eksportuje cały Twój skoroszyt - każdy arkusz jako DataTable - używając ToDataSet z opcjonalnym rozpoznawaniem nagłówków w pierwszym wierszu.

  1. Install IronXL with NuGet Package Manager

    PM > Install-Package IronXL.Excel
  2. Skopiuj i uruchom ten fragment kodu.

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronXL w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak załaduję DataSet do skoroszytu?

Użyj metody statycznej LoadWorkSheetsFromDataSet, aby zaimportować DataSet do skoroszytu. Ta metoda wymaga zarówno obiektów DataSet, jak i Workbook. Akceptuje również opcjonalne ustawienia poprzez DataSet. Najpierw utwórz skoroszyt przy użyciu 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)
$vbLabelText   $csharpLabel

Każdy DataTable w DataSet staje się osobnym 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:

: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")
$vbLabelText   $csharpLabel

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 eksportować skoroszyt jako DataSet?

Metoda ToDataSet przekształca skoroszyt do System.Data.DataSet, gdzie każdy arkusz staje się System.Data.DataTable. Wywołaj tę metodę na skoroszycie Excela, aby skonwertować 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!
$vbLabelText   $csharpLabel

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:

: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
$vbLabelText   $csharpLabel

Eksportowany DataSet zachowuje relacje i ograniczenia zdefiniowane w Excelu, co jest idealne do pracy z złożonymi strukturami danych Excel bez zależności od Interopa Excela.

Dodatkowe funkcje DataSet/DataTable

IronXL oferuje zaawansowane funkcje podczas pracy z DataSet i DataTable:

Obsługa typów danych

IronXL inteligentnie mapuje typy danych podczas konwersji Excel-DataSet. Komórki liczbowe stają się odpowiednimi typami liczbowymi (Int32, Double, Decimal), komórki datowe stają się obiektami DateTime, a komórki tekstowe stają się String. 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
  • Obsługa niestandardowej serializacji przy użyciu int
  • Uwzględnij zasady walidacji danych za pomocą decimal
  • Obsługuj brakujące wartości za pomocą double
  • Zarządzaj metadanymi arkusza przez DateTime
  • Zachowaj typy formatowania komórek używając string

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 ułatwiajac 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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 2,150,290 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Chcesz szybkiego dowodu? PM > Install-Package IronXL.Excel
uruchom próbkę zobacz, jak Twoje dane stają się arkuszem.