
using IronXL 將 Excel 檔案匯入 DataTable
C# 將 Excel 文件匯入至 DataTable 使用 IronXL
開發者的一天中,手動解析 Excel 文件很少是讓人開心的事。 我們都曾在這種情況下,試圖處理舊版 OLEDB 連接字串或試圖將無結構的試算表資料映射為您的 .NET 應用程式實際理解的內容。
C# 中的 DataTable 是一個強大的工具。 它充當完美的橋樑,將那些行和列轉化為熟悉的結構,隨時準備進行 LINQ 查詢、DataGrid 綁定或快速導入至 SQL 資料庫。
IronXL 減輕了此過程的負擔。 它使用一個簡單、直觀的 ToDataTable 方法來處理轉換,而不是複雜的配置。 無論您是在構建報告工具還是資料遷移腳本,這是您輕鬆匯入 Excel 資料的方法。
想要跟著做嗎? 使用 IronXL 免費試用版 親自嘗試這個強大的程式庫。
How Can You Import an Excel File into a DataTable in C#?
要在 C# 中將 Excel 文件匯入 DataTable,請使用 WorkBook.Load 載入工作簿,存取目標工作表,然後調用 ToDataTable 方法。 此方法適用於 XLSX 文件、XLS、XLSM 和 CSV 格式。 請確保參考以下命名空間以存取所需的類。
通過 Visual Studio 中的 NuGet 套件管理器輸入以下命令來安裝 IronXL:
然後,使用以下簡潔的程式碼片段來移動您的資料:
using IronXL;
using System;
using System.Data;
class Program
{
static void Main(string[] args)
{
// Load the Excel file from the specified path
string filePath = "sales-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
// Access the first worksheet in the workbook
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable with first row as column headers
DataTable dt = worksheet.ToDataTable(true);
// Display the imported data
foreach (DataRow row in dt.Rows)
{
Console.WriteLine(string.Join(" | ", row.ItemArray));
}
}
}Imports IronXL
Imports System
Imports System.Data
Module Program
Sub Main(args As String())
' Load the Excel file from the specified path
Dim filePath As String = "sales-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
' Access the first worksheet in the workbook
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable with first row as column headers
Dim dt As DataTable = worksheet.ToDataTable(True)
' Display the imported data
For Each row As DataRow In dt.Rows
Console.WriteLine(String.Join(" | ", row.ItemArray))
Next
End Sub
End Module輸出

WorkBook.Load 方法從字串 filePath 位置讀取 Excel 文件,並建立一個包含所有 Excel 表格資料的工作簿物件。 ToDataTable(true) 參數表示第一行包含列標題,這些標題會自動用作 DataTable 列名稱。
讀取 Excel 文件資料到 DataTable 的最佳方法是什麼?
有效讀取 Excel 文件內容需要處理標題行和原始資料情況。 IronXL 的 ToDataTable 方法接受一個布林參數,該參數確定第一行是作為列名稱還是作為資料處理。 請注意,處理擴展屬性或轉換複雜的單元格型別可能需要額外的配置,但預設方法能夠健壯地處理大多數情況。
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
{
object value = row[i];
Console.Write($"{value}\t");
}
Console.WriteLine();
}Imports IronXL
Imports System.Data
' Load workbook from file path
Dim filePath As String = "C:\Data\inventory.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.WorkSheets(0)
' First row as headers (true) or as data (false)
Dim dataTableWithHeaders As DataTable = worksheet.ToDataTable(True)
Dim dataTableWithoutHeaders As DataTable = worksheet.ToDataTable(False)
' Process each row in the DataTable
For Each row As DataRow In dataTableWithHeaders.Rows
For i As Integer = 0 To dataTableWithHeaders.Columns.Count - 1
Dim value As Object = row(i)
Console.Write($"{value}" & vbTab)
Next
Console.WriteLine()
Next輸出

這種靈活性使得 IronXL 非常適合處理無論其結構如何的 Excel 試算表文件。 與 EPPlus 套件或傳統方法需要新的 OleDbDataAdapter 實例不同,IronXL 在一個方法調用中處理轉換。 該程式庫支持 .NET Core、.NET Framework 和跨平台部署,而不需要安裝 Microsoft Excel。
如何將多個 Excel 工作表轉換為 DataSet?
當您的 Excel 工作簿包含多個工作表時,轉換為 DataSet 可保留每個 Excel 工作表作為集合中的單獨 DataTable。 這種方法對於報告應用程式和多工作表資料處理至關重要。
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
Console.WriteLine($"Sheet: {table.TableName}");
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
foreach (DataRow row in table.Rows)
{
Console.WriteLine(string.Join(", ", row.ItemArray));
}
}Imports IronXL
Imports System
Imports System.Data
' Load multi-sheet workbook
Dim workbook As WorkBook = WorkBook.Load("quarterly-reports.xlsx")
' Convert entire workbook to DataSet (each sheet becomes a DataTable)
Dim dataset As DataSet = workbook.ToDataSet()
' Iterate through all tables in the DataSet
For Each table As DataTable In dataset.Tables
Console.WriteLine($"Sheet: {table.TableName}")
Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}")
For Each row As DataRow In table.Rows
Console.WriteLine(String.Join(", ", row.ItemArray))
Next
Next輸出

ToDataSet 方法 建立一個包含每個工作表的 DataTable 物件的新 DataSet。 每個表的 TableName 屬性反映了原始 Excel 表名,使得在處理期間能夠輕鬆引用特定資料。
如何將 Excel 中的資料匯入資料庫?
一個常見的工作流程涉及讀取 Excel 文件資料並將其插入到資料庫系統中。 DataTable 結構與 ADO.NET 的資料庫操作無縫整合。
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
Console.WriteLine("No data to import");
return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Customers";
bulkCopy.WriteToServer(dt);
}
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");Imports IronXL
Imports System.Data
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim filePath As String = "C:\imports\customer-data.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Convert Excel data to DataTable
Dim dt As DataTable = worksheet.ToDataTable(True)
' Validate data before database insert
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Console.WriteLine("No data to import")
Return
End If
' Insert into database using SqlBulkCopy
Dim connectionString As String = "Server=.;Database=Sales;Trusted_Connection=True;"
Using connection As New SqlConnection(connectionString)
connection.Open()
Using bulkCopy As New SqlBulkCopy(connection)
bulkCopy.DestinationTableName = "Customers"
bulkCopy.WriteToServer(dt)
End Using
End Using
Console.WriteLine($"Imported {dt.Rows.Count} records successfully")
End Sub
End Module此程式碼示範了如何載入 Excel 文件,將其轉換為 DataTable,並執行批量的資料庫插入。 空值檢查確保在嘗試匯入操作之前的資料完整性。
如何將 DataTable 匯出回 Excel?
IronXL 支援雙向資料流,允許您從 DataTable 物件建立 Excel 文件,適用於報告和資料匯出場景。
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");Imports IronXL
Imports System.Data
' Create sample DataTable
Dim dt As New DataTable("Products")
dt.Columns.Add("ProductID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Rows.Add(1, "Widget", 29.99D)
dt.Rows.Add(2, "Gadget", 49.99D)
' Create new workbook and load DataTable
Dim workbook As WorkBook = WorkBook.Create()
workbook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}})
' Save as Excel file
workbook.SaveAs("exported-products.xlsx")輸出

LoadWorkSheetsFromDataSet 方法接受包含 DataTable 物件的 DataSet,並建立相應的工作表。 在文件中了解更多關於匯出台 DataTable 到 Excel的資訊。
結論
IronXL 將 Excel 到 DataTable 轉換的複雜性簡化為簡單的方法調用。 無論是匯入單個 Excel 工作表還是處理多工作表的工作簿到完整的 DataSet,程式庫有效地處理 XLSX 文件、資料型別轉換和基於流的載入。
DataTable 的靈活性與 IronXL 的直觀 API 相結合,可為資料庫整合、報告系統和應用程式資料綁定提供強大的資料工作流程。 下載 IronXL 精簡您的 Excel 資料處理,或者 購買許可證 以進行生產部署。

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



