Import und Export als DataSet in C# | IronXL

So importieren und exportieren Sie DataTable in C

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

IronXL konvertiert Excel-Arbeitsmappen und DataSets mit einzelnen Methodenaufrufen – verwenden Sie LoadWorkSheetsFromDataSet(), um DataSets in Arbeitsmappen zu importieren, und ToDataSet(), um Arbeitsmappen als DataSets mit automatischer Zuordnung von Arbeitsblättern zu Tabellen.

Ein DataSet ist eine In-Memory-Darstellung von Daten, die mehrere miteinander verbundene Tabellen, Beziehungen und Einschränkungen enthält. Wird für die Arbeit mit Daten aus Datenbanken, XML und anderen Quellen verwendet. Bei der Arbeit mit Excel-Dateien in C# bieten DataSet eine vertraute .NET-Struktur, die sich in datengesteuerte Anwendungen integrieren lässt.

Ein DataTable steht für eine einzelne Tabelle mit Zeilen und Spalten innerhalb eines DataSet. IronXL ordnet jedes Excel-Arbeitsblatt automatisch einem entsprechenden DataTable zu und bewahrt dabei Spaltenüberschriften und Datentypen während der Konvertierung.

Schnellstart: Arbeitsmappe sofort als System.Data.DataSet exportieren

Die Konvertierung einer Arbeitsmappe in ein DataSet erfordert einen einzigen Methodenaufruf. In diesem Beispiel wird Ihre gesamte Arbeitsmappe – jedes Blatt als DataTable – unter Verwendung von ToDataSet mit optionaler Erkennung der Kopfzeile in der ersten Zeile exportiert.

  1. Installieren Sie IronXL mit NuGet Package Manager

    PM > Install-Package IronXL.Excel
  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronXL in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion

    arrow pointer

Wie lade ich einen DataSet in eine Arbeitsmappe?

Verwenden Sie die statische Methode LoadWorkSheetsFromDataSet, um ein DataSet in eine Arbeitsmappe zu importieren. Diese Methode erfordert sowohl DataSet- als auch Workbook-Objekte. Sie akzeptiert auch optionale Einstellungen über DataSet. Erstellen Sie die Arbeitsmappe zunächst mit der Methode Create. Übergeben Sie das DataSet-Objekt und das workbook-Objekt an die Methode.

: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

Jedes DataTable innerhalb von DataSet wird zu einem separaten Arbeitsblatt. Der Tabellenname wird zum Arbeitsblattnamen, wodurch die Datenorganisation erhalten bleibt. Bei mehreren Datenquellen kombinieren Sie dies mit der Erstellung neuer Tabellenkalkulationen oder der Verwaltung bestehender Arbeitsblätter.

Hier ist ein umfassendes Beispiel für das Laden eines DataSet mit mehreren Tabellen:

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

Dieser Ansatz eignet sich gut für den Export von Daten aus SQL-Datenbanken oder die Konsolidierung von Daten aus mehreren Quellen im Excel-Format.

Besuchen Sie "So laden Sie vorhandene Tabellenkalkulationen", um mehr über das Importieren von Tabellenkalkulationen aus verschiedenen Dateiformaten zu erfahren.


Wie exportiere ich eine Arbeitsmappe als DataSet?

Die ToDataSet-Methode konvertiert die Arbeitsmappe in eine System.Data.DataSet, wobei jedes Arbeitsblatt zu einer System.Data.DataTable wird. Rufen Sie diese Methode für die Excel-Arbeitsmappe auf, um sie in ein DataSet-Objekt zu konvertieren. Der Parameter useFirstRowAsColumnNames legt fest, ob die erste Zeile als Spaltennamen verwendet werden soll.

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// DIESE CODE-AUSZUG IST NICHT VERFÜGBAR!
' DIESER CODE-AUSZUG IST NICHT VERFÜGBAR!
$vbLabelText   $csharpLabel

IronXL übernimmt automatisch die Konvertierung von Datentypen und bewahrt die Struktur der Tabellenkalkulation beim Export in DataSets. Dies ist hilfreich bei der Integration von Excel-Daten in SQL-Datenbanken oder bei der Verwendung von Daten in anderen .NET-Anwendungen.

Fortgeschrittenes Beispiel zur Veranschaulichung des Arbeitsmappenexports und der DataSet-Verarbeitung:

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

Das exportierte DataSet behält die in Excel definierten Beziehungen und Einschränkungen bei und eignet sich somit perfekt für die Arbeit mit komplexen Excel-Datenstrukturen ohne Abhängigkeiten von Excel Interop.

Zusätzliche Funktionen von DataSet/DataTable

IronXL bietet erweiterte Funktionen bei der Arbeit mit DataSet und DataTable:

Umgang mit Datentypen

IronXL ordnet Datentypen bei der Konvertierung von Excel-DataSet intelligent zu. Zahlenzellen werden zu entsprechenden Zahlentypen (Int32, Double, Decimal), Datumszellen werden zu DateTime-Objekten, Textzellen werden zu Strings. Passen Sie dies an, indem Sie vor der Konvertierung die Datenformate der Zellen festlegen.

Leistungsoptimierung

IronXL optimiert die Speichernutzung und die Verarbeitungsgeschwindigkeit für große Datensätze. Die Bibliothek streamt Daten effizient, anstatt alles in den Arbeitsspeicher zu laden. Geeignet für Enterprise-Anwendungen, die große Datenmengen verarbeiten.

Integration mit anderen Funktionen

Die DataSet-/DataTable-Funktionalität lässt sich mit anderen IronXL-Funktionen integrieren:

  • Wenden Sie Formeln und Berechnungen an, bevor Sie in eine DataSet exportieren
  • Verwenden Sie bedingte Formatierung, um Daten vor der Konvertierung hervorzuheben
  • Kombinieren Sie dies mit der Erstellung von Diagrammen für die visuelle Berichterstellung
  • Unterstützung benutzerdefinierter Serialisierung mithilfe von int
  • Fügen Sie Datenvalidierungsregeln über decimal ein
  • Behandeln Sie fehlende Werte mit double
  • Verwalten Sie Arbeitsblatt-Metadaten über DateTime
  • Behalten Sie die Zellformatierungstypen mit string bei

Besuchen Sie "So speichern oder exportieren Sie Tabellenkalkulationen", um mehr über den Export von Tabellenkalkulationen in verschiedene Dateiformate zu erfahren.

Häufig gestellte Fragen

Wie konvertiere ich ein Excel-Arbeitsbuch in ein DataSet in C#?

Mit IronXL können Sie eine Excel-Arbeitsmappe mithilfe der Methode ToDataSet() in ein DataSet konvertieren. Rufen Sie einfach WorkBook.ToDataSet(useFirstRowAsColumnNames: true) auf, um Ihre gesamte Arbeitsmappe zu exportieren, wobei jedes Blatt zu einer DataTable im resultierenden DataSet wird.

Kann ich ein DataSet programmatisch in eine Excel-Arbeitsmappe importieren?

Ja, IronXL bietet die LoadWorkSheetsFromDataSet()-Methode, um ein DataSet in eine Arbeitsmappe zu importieren. Erstellen Sie eine Arbeitsmappe mit WorkBook.Create() und übergeben Sie dann sowohl das DataSet als auch die Arbeitsmappe an diese statische Methode. Jede DataTable wird zu einem separaten Arbeitsblatt.

Was passiert mit DataTable-Namen beim Importieren in Excel?

Bei Verwendung der LoadWorkSheetsFromDataSet()-Methode von IronXL wird jeder DataTable-Name automatisch zum Namen des Arbeitsblatts in Excel, wodurch die Datenorganisation erhalten bleibt und die Identifizierung verschiedener Datenquellen erleichtert wird.

Behält die Bibliothek die Spaltenüberschriften während der DataSet-Konvertierung bei?

Ja, IronXL behält die Spaltenüberschriften und Datentypen während der Konvertierung zwischen Excel und DataSets bei. Wenn ToDataSet() mit useFirstRowAsColumnNames auf true gesetzt wird, wird die erste Zeile jedes Arbeitsblattes als Spaltenüberschrift erkannt.

Wie werden mehrere Tabellen bei der Konvertierung zwischen Excel und DataSets behandelt?

IronXL ordnet bei der Konvertierung in DataSet jedes Excel-Arbeitsblatt automatisch einer entsprechenden DataTable zu und umgekehrt. Wenn Sie ein DataSet mit mehreren Tabellen importieren, erstellt jede DataTable ein eigenes Arbeitsblatt in der Arbeitsmappe.

Was ist der minimale Code, der für den Export von Excel in DataSet benötigt wird?

Der minimale Code zum Exportieren einer Excel-Arbeitsmappe in ein DataSet mit IronXL besteht aus nur einer Zeile: DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); Dies konvertiert Ihre gesamte Arbeitsmappe mit automatischer Blatt-zu-Tabelle-Zuordnung.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 2,052,917 | Version: 2026.6 just released
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronXL.Excel
Führen Sie ein Beispiel aus und sehen Sie zu, wie Ihre Daten zu einer Tabellenkalkulation werden.