如何在 C# | IronXL 中作為資料集匯入和匯出

如何在 C# 中匯入和匯出 DataSet/DataTable;

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

IronXL 透過單一方法呼叫即可在 Excel 工作簿與 DataSet 之間進行轉換——使用 LoadWorkSheetsFromDataSet() 將 DataSet 匯入工作簿,並使用 ToDataSet() 將工作簿匯出為 DataSet,同時自動執行工作表對應表格的映射。

DataSet 是一種記憶體中的資料表示形式,其中包含多個相關的資料表、關聯關係及約束條件。 用於處理資料庫、XML 及其他來源的資料。 在 C# 中處理 Excel 檔案時,DataSet 提供了一種熟悉的 .NET 結構,可與資料驅動型應用程式無縫整合。

DataTable 代表 DataSet 內含行與列的單一表格。 IronXL 會自動將每個 Excel 工作表映射至對應的 DataTable,並在轉換過程中保留欄位標題與資料類型。

快速入門:立即將工作簿匯出為 System.Data.DataSet

將工作簿轉換為 DataSet 只需一次方法呼叫。 此範例會將整個工作簿匯出——每個工作表以 DataTable 格式呈現——並使用 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

如何將資料集載入工作簿?

請使用靜態 LoadWorkSheetsFromDataSet 方法,將 DataSet 匯入工作簿中。 此方法需要同時傳入 DataSetWorkbook 物件。 請先使用 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);
$vbLabelText   $csharpLabel

DataTable 內的每個 DataSet 將成為獨立的工作表。 表格名稱會變成工作表名稱,以維持資料組織。 對於多個資料來源,請結合建立新的試算表管理現有的工作表

以下是一個載入包含多個表格的 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.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");
$vbLabelText   $csharpLabel

從 SQL 資料庫匯出資料或將多個來源的資料整合為 Excel 格式時,此方法非常有效。

請造訪 如何載入現有試算表,瞭解從各種檔案格式匯入試算表的方法。


如何將工作簿匯出為資料集?

ToDataSet 方法會將工作簿轉換為 System.Data.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 處理的進階範例:

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

匯出的 DataSet 能維持 Excel 中定義的關聯性與限制條件,非常適合處理複雜的 Excel 資料結構,且無需依賴 Excel Interop。

額外的 DataSet/DataTable 功能

IronXL 在處理 DataSetDataTable 時提供進階功能:

處理資料類型

IronXl.Excel 可在 Excel-DataSet 轉換過程中智慧地對應資料類型。 數字儲存格將轉換為適當的數值類型(int, double),日期儲存格將轉為 DateTime 物件,文字儲存格則轉為 string。 透過 在轉換前設定儲存格資料格式來自訂。

效能最佳化

IronXL 優化大型資料集的記憶體使用量和處理速度。 這個函式庫能有效率地串流資料,而非將所有資料載入記憶體。 適用於處理大量資料的 企業應用程式

與其他功能整合

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

  • 在匯出至 DataSet 之前,請先套用公式與計算
  • 在轉換前使用 條件格式化來強調資料
  • 結合圖表製作進行視覺化報告

請造訪 如何儲存或匯出試算表,瞭解如何將試算表匯出為各種檔案格式。

常見問題解答

如何在 C# 中將 Excel 工作簿轉換為數據集?

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

我可以透過程式將 DataSet 匯入 Excel 工作簿嗎?

是的,IronXL 提供 LoadWorkSheetsFromDataSet() 方法將 DataSet 匯入工作簿。使用 WorkBook.Create() 建立工作簿,然後將 DataSet 和工作簿傳給此靜態方法。每個 DataTable 會成為單獨的工作表。

匯入 Excel 時,DataTable 名稱會發生什麼變化?

使用 IronXL.Excel 的 LoadWorkSheetsFromDataSet() 方法時,每個 DataTable 的名稱都會自動變成 Excel 中的工作表名稱,以維護您的資料組織,並方便識別不同的資料來源。

在 DataSet 轉換過程中,函式庫會保留欄頭嗎?

是的,在 Excel 和 DataSets 之間轉換時,IronXL.Excel 會保留欄頭和資料類型。當使用 ToDataSet() 且 useFirstRowAsColumnNames 設定為 true 時,每個工作表的第一行會被識別為列頭。

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

IronXL.Excel 在轉換為 DataSet 時,會自動將每個 Excel 工作表對應到相應的 DataTable,反之亦然。匯入包含多個表格的 DataSet 時,每個 DataTable 會在工作簿中建立單獨的工作表。

將 Excel 匯出至 DataSet 所需的最少程式碼是什麼?

使用 IronXL.Excel 將 Excel 工作簿匯出至 DataSet 的最小程式碼只有一行:DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames:true);這會轉換您的整個工作簿,並自動進行工作表到表格的映射。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 1,913,565 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

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