如何在C#中導入和導出為DataSet | IronXL

如何在C#中導入和導出DataTable

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

IronXL透過單一方法調用在Excel活頁簿和DataSet之間轉換 - 使用DataSet,自動進行工作表到表格的映射。

DataSet是包含多個相關表格、關係和限制的資料的記憶體表示。 用於處理來自資料庫、XML和其他來源的資料。 處理C#中的Excel文件時,DataSet提供熟悉的.NET結構,與資料驅動的應用程式整合。

DataSet中的一個單一表格,包含行和列。 IronXL自動將每個Excel工作表映射到對應的DataTable,在轉換過程中保留列標和資料型別。

System.Data.DataSet@@--AH2EG--@@

將活頁簿轉換為DataSet只需一次方法調用。 此範例將整個活頁簿導出,每個工作表以ToDataSet並具有可選的首行標頭識別。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 複製並運行這段程式碼片段。

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronXL,透過免費試用

    arrow pointer

如何將DataSet載入到活頁簿中?

使用靜態方法DataSet導入活頁簿。 該方法需要Workbook物件。 它還接受通過DataSet的可選設置。 首先使用Create方法建立活頁簿。 將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)
$vbLabelText   $csharpLabel

DataSet成為一個獨立的工作表。 表名成為工作表名稱,保持資料組織性。 對於多個資料來源,將其與建立新電子表格管理現有工作表結合使用。

這是一個載入具有多個表的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")
$vbLabelText   $csharpLabel

這種方法在從SQL資料庫導出資料或將來自多個來源的資料整合到Excel格式時效果良好。

存取如何載入現有電子表格以了解從各種文件格式導入電子表格。


如何將活頁簿導出為DataSet

System.Data.DataTable。 在Excel活頁簿上調用此方法,將其轉換為DataSet物件。 useFirstRowAsColumnNames參數決定是否使用第一行作為列名。

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// 這段程式碼片段不可用!
' 這段程式碼片段不可用!
$vbLabelText   $csharpLabel

IronXL在導出到DataSets時自動處理資料型別轉換並保持電子表格結構。 這在將Excel資料整合到SQL資料庫中或在其他.NET應用程式中使用資料時有所幫助。

高級範例演示活頁簿導出和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

導出的DataSet保持在Excel中定義的關係和限制,適合處理複雜Excel資料結構且不依賴Excel Interop。

DataSet/DataTable的其他功能

IronXL在使用DataTable時提供高級功能:

處理資料型別

IronXL在Excel-DataSet轉換期間智能映射資料型別。 數值單元格成為合適的數值型別(String。 在轉換前透過設置單元格資料格式來自定義此項。

性能優化

IronXL對大型資料集的記憶體使用和處理速度進行優化。 該程式庫有效地流式處理資料,而不是將所有內容裝載到記憶體中。 適用於Enterprise應用處理大資料量。

與其他功能的整合

DataSet/DataTable功能與其他IronXL功能整合:

  • 在導出為DataSet之前應用公式和計算
  • 使用條件格式設置在轉換前突出資料
  • 結合圖表建立進行可視化報告
  • 支援使用int進行自定義序列化
  • 通過decimal包含資料驗證規則
  • 使用double處理缺失值
  • 通過DateTime管理工作表元資料
  • 使用string保留單元格格式型別

存取如何保存或導出電子表格學習如何將電子表格導出為各種文件格式。

常見問題

如何在C#中將Excel工作簿轉換為DataSet?

使用IronXL,您可以使用ToDataSet()方法將Excel工作簿轉換為DataSet。只需調用WorkBook.ToDataSet(useFirstRowAsColumnNames: true)即可導出整個工作簿,其中每個工作表都會成為結果DataSet中的一個DataTable。

我可以以程式化的方式將DataSet導入到Excel工作簿中嗎?

可以的,IronXL提供LoadWorkSheetsFromDataSet()方法以將DataSet導入到工作簿中。使用WorkBook.Create()建立工作簿,然後將DataSet和工作簿一起傳遞給這個靜態方法。每個DataTable都會成為一個單獨的工作表。

當導入到Excel中時,會發生什麼情況在DataTable名稱上?

使用IronXL的LoadWorkSheetsFromDataSet()方法時,每個DataTable名稱會自動成為Excel工作表名稱,維護您的資料組織,使識別不同資料來源變得容易。

程式庫在DataSet轉換期間會保留欄位標頭嗎?

是的,IronXL在Excel和DataSets之間的轉換過程中會保留欄位標頭和資料型別。使用ToDataSet()且useFirstRowAsColumnNames設置為true時,每個工作表的第一行將被認定為欄位標頭。

在Excel和DataSets之間轉換時如何處理多個表格?

IronXL在轉換到DataSet時會自動將每個Excel工作表映射到相應的DataTable,反之亦然。當導入具有多個表格的DataSet時,每個DataTable將建立一個單獨的工作簿工作表。

導出Excel到DataSet所需的最少程式碼是什麼?

使用IronXL將Excel工作簿導出到DataSet所需要的最少程式碼只有一行:DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); 這將使整個工作簿進行自動的工作表到表格映射的轉換。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

想要快速證明嗎? PM > Install-Package IronXL.Excel
運行一個範例 觀看您的資料成為試算表。