使用 IRONXL 如何使用 IronXL.Excel 在 C# 中輕鬆匯入、讀取和處理 MS Excel 檔案資料 Curtis Chau 更新:2026年1月5日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 對於許多 .NET 開發人員來說,處理 Microsoft Excel 檔案是日常工作的一部分。 無論是匯入客戶資料、處理財務報告,還是將資料從電子表格或 Excel 工作簿遷移到資料庫,開發人員都需要一種可靠的方法來讀取 Excel 文件或匯出 Excel (XLSX) 文件,而無需複雜的依賴關係或安裝 Excel。 IronXL提供了一個簡單易用的解決方案,可跨平台運行,無需安裝 Microsoft Office。 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 1 - IronXL 如何開始使用 C# 匯入 Excel 資料? 使用 IronXL,只需幾分鐘即可開始在 C# 中匯入 Excel 檔案。 Excel 函式庫可以無縫處理傳統的 XLS 和現代的 XLSX 格式,以及 CSV、TSV 和其他試算表格式。 與依賴Microsoft.Office.Interop.Excel的解決方案不同,IronXL 可以在任何 .NET 或 .NET Core 平台上獨立運作。 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 2 - 跨平台 首先,透過 NuGet 套件管理器安裝 IronXL,或在 Visual Studio 中選擇"管理 NuGet 套件": Install-Package IronXL.Excel 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 3 - 安裝 安裝完成後,匯入Excel資料變得非常簡單: using IronXL; static void Main(string[] args) { // Load any Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); // Access the first worksheet WorkSheet sheet = workBook.WorkSheets[0]; // Read a cell value string value = sheet["B1"].StringValue; Console.WriteLine(value); } using IronXL; static void Main(string[] args) { // Load any Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); // Access the first worksheet WorkSheet sheet = workBook.WorkSheets[0]; // Read a cell value string value = sheet["B1"].StringValue; Console.WriteLine(value); } Imports IronXL Module Program Sub Main(args As String()) ' Load any Excel file Dim workBook As WorkBook = WorkBook.Load("ProductData.xlsx") ' Access the first worksheet Dim sheet As WorkSheet = workBook.WorkSheets(0) ' Read a cell value Dim value As String = sheet("B1").StringValue Console.WriteLine(value) End Sub End Module $vbLabelText $csharpLabel 這段程式碼示範了核心工作流程:載入工作簿、存取工作表和讀取儲存格值。 WorkBook.Load() 方法會自動偵測檔案格式,無論是 XLS、XLSX 或 CSV。直覺的索引語法 sheet["B1"] 使得存取儲存格就像操作陣列一樣自然。 如需更複雜的操作,請查看 IronXL API 參考,以獲得全面的說明文件。 範例輸入 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 4 - Excel 輸入 輸出 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 5 - 控制台輸出 如何將Excel資料讀入C#物件? 實際應用需要的不只單一儲存格的值。 IronXL 擅長匯入整個資料集並將其轉換為可用的 C# 物件。 當您需要匯入具有結構化資料的 Excel 檔案時,本程式庫提供了多種方法。 // Load the Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Read a range of cells var products = new List<Product>(); foreach (var row in sheet.Rows) { var product = new Product { Id = row.Columns[0].IntValue, Name = row.Columns[1].StringValue, Price = row.Columns[2].DecimalValue, IsAvailable = row.Columns[3].BoolValue }; products.Add(product); } foreach (var product in products) { Console.WriteLine($"Id: {product.Id}, Name: {product.Name}, Price: {product.Price}, Available: {product.IsAvailable}"); } // Load the Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Read a range of cells var products = new List<Product>(); foreach (var row in sheet.Rows) { var product = new Product { Id = row.Columns[0].IntValue, Name = row.Columns[1].StringValue, Price = row.Columns[2].DecimalValue, IsAvailable = row.Columns[3].BoolValue }; products.Add(product); } foreach (var product in products) { Console.WriteLine($"Id: {product.Id}, Name: {product.Name}, Price: {product.Price}, Available: {product.IsAvailable}"); } Imports System Imports System.Collections.Generic ' Load the Excel file Dim workBook As WorkBook = WorkBook.Load("ProductData.xlsx") Dim sheet As WorkSheet = workBook.DefaultWorkSheet ' Read a range of cells Dim products As New List(Of Product)() For Each row In sheet.Rows Dim product As New Product With { .Id = row.Columns(0).IntValue, .Name = row.Columns(1).StringValue, .Price = row.Columns(2).DecimalValue, .IsAvailable = row.Columns(3).BoolValue } products.Add(product) Next For Each product In products Console.WriteLine($"Id: {product.Id}, Name: {product.Name}, Price: {product.Price}, Available: {product.IsAvailable}") Next $vbLabelText $csharpLabel 本範例展示如何遍歷行並將 Excel 資料對應到強型別 C# 物件。 類型化屬性(如 IntValue、StringValue 和 DecimalValue)會自動處理型別轉換。 這種方法無需手動解析,並能減少處理不同資料類型時出現的錯誤。 Stack Overflow上的許多開發者都很欣賞這種類型安全的 Excel 資料匯入方法。 輸出 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 6 - 物件輸出 為了更優雅地存取數據,IronXL 支援範圍操作: // Read specific ranges of ProductData.xlsx file Range dataRange = sheet["A1:D5"]; // Calculate aggregates directly decimal sum = sheet["C1:C5"].Sum(); Console.WriteLine($"Sum of C1:C5: {sum}"); decimal max = sheet["C1:C5"].Max(c => c.DecimalValue); Console.WriteLine($"Max of C1:C5: {max}"); // Use LINQ for filtering var highValueOrders = dataRange .Where(cell => cell.DecimalValue > 100) .Select(cell => cell.Value) .ToList(); Console.WriteLine("High value orders (>100):"); // Print the high value orders to the console foreach (var order in highValueOrders) { Console.WriteLine(order); } // Read specific ranges of ProductData.xlsx file Range dataRange = sheet["A1:D5"]; // Calculate aggregates directly decimal sum = sheet["C1:C5"].Sum(); Console.WriteLine($"Sum of C1:C5: {sum}"); decimal max = sheet["C1:C5"].Max(c => c.DecimalValue); Console.WriteLine($"Max of C1:C5: {max}"); // Use LINQ for filtering var highValueOrders = dataRange .Where(cell => cell.DecimalValue > 100) .Select(cell => cell.Value) .ToList(); Console.WriteLine("High value orders (>100):"); // Print the high value orders to the console foreach (var order in highValueOrders) { Console.WriteLine(order); } ' Read specific ranges of ProductData.xlsx file Dim dataRange As Range = sheet("A1:D5") ' Calculate aggregates directly Dim sum As Decimal = sheet("C1:C5").Sum() Console.WriteLine($"Sum of C1:C5: {sum}") Dim max As Decimal = sheet("C1:C5").Max(Function(c) c.DecimalValue) Console.WriteLine($"Max of C1:C5: {max}") ' Use LINQ for filtering Dim highValueOrders = dataRange _ .Where(Function(cell) cell.DecimalValue > 100) _ .Select(Function(cell) cell.Value) _ .ToList() Console.WriteLine("High value orders (>100):") ' Print the high value orders to the console For Each order In highValueOrders Console.WriteLine(order) Next $vbLabelText $csharpLabel Range 類別提供了類似集合的方式,可以同時存取多個單元格。 LINQ 相容性意味著開發人員可以使用熟悉的 C# 模式來篩選、轉換和聚合 Excel 資料。 內建的聚合方法,如 Sum() 和 Max(),直接對單元格範圍進行操作,而無需先將所有資料載入到記憶體中。 輸出 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 7 - 範圍輸出 如何將Excel表格轉換為DataTable? DataTable 轉換對於資料庫操作和資料綁定場景至關重要。 IronXL 提供內建的方法,可有效率地處理從 Excel 到 DataTable 的轉換。當您需要將 Excel 試算表匯入 SQL Server 或其他資料庫時,這項功能特別有用。 using System.Data; // Load Excel file WorkBook workBook = WorkBook.Load("inventory.xlsx"); // Select first Excel worksheet WorkSheet sheet = workBook.WorkSheets.First(); // Convert to DataTable with headers DataTable dataTable = sheet.ToDataTable(true); // The DataTable is ready for database operations using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) { bulkCopy.DestinationTableName = "Inventory"; bulkCopy.WriteToServer(dataTable); } using System.Data; // Load Excel file WorkBook workBook = WorkBook.Load("inventory.xlsx"); // Select first Excel worksheet WorkSheet sheet = workBook.WorkSheets.First(); // Convert to DataTable with headers DataTable dataTable = sheet.ToDataTable(true); // The DataTable is ready for database operations using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) { bulkCopy.DestinationTableName = "Inventory"; bulkCopy.WriteToServer(dataTable); } Imports System.Data ' Load Excel file Dim workBook As WorkBook = WorkBook.Load("inventory.xlsx") ' Select first Excel worksheet Dim sheet As WorkSheet = workBook.WorkSheets.First() ' Convert to DataTable with headers Dim dataTable As DataTable = sheet.ToDataTable(True) ' The DataTable is ready for database operations Using bulkCopy As New SqlBulkCopy(connectionString) bulkCopy.DestinationTableName = "Inventory" bulkCopy.WriteToServer(dataTable) End Using $vbLabelText $csharpLabel ToDataTable() 方法接受一個布林參數,指示第一行是否包含標題。 當設定為 true 時,IronXL 會自動將第一行值用作 DataTable 中的列名。 此資料表可與 ADO.NET 操作、實體框架和資料綁定控制項無縫整合。 微軟關於 SqlBulkCopy 的文檔展示了這種模式如何有效率地處理大規模資料導入。 為了更好地控制轉換過程: // Custom DataTable conversion DataTable customTable = new DataTable(); // Define columns based on Excel structure for (int col = 0; col < sheet.ColumnCount; col++) { customTable.Columns.Add($"Column{col + 1}", typeof(string)); } // Import data with validation foreach (var row in sheet.Rows) { var dataRow = customTable.NewRow(); for (int col = 0; col < sheet.ColumnCount; col++) { dataRow[col] = row.Columns[col].Value ?? DBNull.Value; } customTable.Rows.Add(dataRow); } // Print column headers foreach (DataColumn column in customTable.Columns) { Console.Write($"{column.ColumnName}\t"); } Console.WriteLine(); // Print each row foreach (DataRow row in customTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } // Custom DataTable conversion DataTable customTable = new DataTable(); // Define columns based on Excel structure for (int col = 0; col < sheet.ColumnCount; col++) { customTable.Columns.Add($"Column{col + 1}", typeof(string)); } // Import data with validation foreach (var row in sheet.Rows) { var dataRow = customTable.NewRow(); for (int col = 0; col < sheet.ColumnCount; col++) { dataRow[col] = row.Columns[col].Value ?? DBNull.Value; } customTable.Rows.Add(dataRow); } // Print column headers foreach (DataColumn column in customTable.Columns) { Console.Write($"{column.ColumnName}\t"); } Console.WriteLine(); // Print each row foreach (DataRow row in customTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } Imports System Imports System.Data ' Custom DataTable conversion Dim customTable As New DataTable() ' Define columns based on Excel structure For col As Integer = 0 To sheet.ColumnCount - 1 customTable.Columns.Add($"Column{col + 1}", GetType(String)) Next ' Import data with validation For Each row In sheet.Rows Dim dataRow = customTable.NewRow() For col As Integer = 0 To sheet.ColumnCount - 1 dataRow(col) = If(row.Columns(col).Value, DBNull.Value) Next customTable.Rows.Add(dataRow) Next ' Print column headers For Each column As DataColumn In customTable.Columns Console.Write($"{column.ColumnName}" & vbTab) Next Console.WriteLine() ' Print each row For Each row As DataRow In customTable.Rows For Each item In row.ItemArray Console.Write($"{item}" & vbTab) Next Console.WriteLine() Next $vbLabelText $csharpLabel 這種方法為導入過程中的資料轉換提供了靈活性。 透過將空值轉換為 DBNull.Value 來優雅地處理空值,從而確保與資料庫操作的兼容性。 輸出 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 8 - 資料表輸出 哪些進階功能支援數據處理? IronXL 不僅具備基本的閱讀功能,還擁有應對複雜場景的強大功能。 該庫保留了 Excel 公式,允許計算結果動態更新。 對於處理 複雜 Excel 工作簿的開發人員而言,這可在整個匯入過程中維持資料的完整性。 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 9 - 功能 // Read calculated values from formulas WorkSheet sheet = workBook.GetWorkSheet("Reports"); decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result // Formulas remain intact string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)" // Read calculated values from formulas WorkSheet sheet = workBook.GetWorkSheet("Reports"); decimal calculatedTotal = sheet["E10"].DecimalValue; // Reads formula result // Formulas remain intact string formula = sheet["E10"].Formula; // Returns "=SUM(E2:E9)" ' Read calculated values from formulas Dim sheet As WorkSheet = workBook.GetWorkSheet("Reports") Dim calculatedTotal As Decimal = sheet("E10").DecimalValue ' Reads formula result ' Formulas remain intact Dim formula As String = sheet("E10").Formula ' Returns "=SUM(E2:E9)" $vbLabelText $csharpLabel 支援公式功能意味著匯入包含複雜計算的 Excel 檔案無需重新建立業務邏輯即可正常運作。 該函式庫會自動計算公式,傳回計算值,同時保留原始公式結構。 當您需要讀取包含財務模型或報告範本的 Excel 檔案時,這項功能證明是無價的。 跨平台相容性確保在 Windows、Linux、macOS 和容器環境中行為一致。 IronXL 的這種靈活性使其成為雲端部署和微服務架構的理想選擇,在這些情況下,安裝 Office 是不可行的。 .NET 基金會的文檔重點介紹了現代 .NET 應用程式在匯入 Excel 資料時如何受益於這種平台獨立性。 Entity Framework 整合簡化了 C# Excel 導入場景的資料庫工作流程: var products = sheet.Rows.Skip(1) .Select(row => new Product { Name = row.Columns[0].StringValue, Price = row.Columns[1].DecimalValue }) .ToList(); using (var context = new AppDbContext()) { context.Products.AddRange(products); await context.SaveChangesAsync(); } var products = sheet.Rows.Skip(1) .Select(row => new Product { Name = row.Columns[0].StringValue, Price = row.Columns[1].DecimalValue }) .ToList(); using (var context = new AppDbContext()) { context.Products.AddRange(products); await context.SaveChangesAsync(); } Imports System.Linq Dim products = sheet.Rows.Skip(1) _ .Select(Function(row) New Product With { .Name = row.Columns(0).StringValue, .Price = row.Columns(1).DecimalValue }).ToList() Using context As New AppDbContext() context.Products.AddRange(products) Await context.SaveChangesAsync() End Using $vbLabelText $csharpLabel 這種模式能夠以最少的程式碼實現 Excel 到資料庫的直接管道,非常適合資料遷移和 ETL 流程。 如需全面的 Excel 處理功能,請下載 IronXL 以簡化您的資料匯入工作流程。 結論 IronXL 將複雜的 Excel 資料導入問題轉換為簡單的 C# 程式碼。 該庫直觀的 API、全面的格式支援和跨平台相容性使其成為需要處理 Excel 文件的生產應用程式的實用選擇。 如何使用 IronXL 在 C# 中輕鬆匯入、讀取和操作 MS Excel 檔案資料:圖 10 - 許可 準備好將 Excel 檔案匯入到您的 C# 專案中了嗎? 立即開始免費試用,探索 IronXL 的完整功能。 如需詳細的實施指導,請造訪 完整說明文件,或探索更多 Excel 進階方案教學。 針對生產部署,檢視 License 選項,找出適合您團隊的方案。 常見問題解答 如何在 C# 中匯入 Excel 資料? 您可以使用 IronXL 在 C# 中輕鬆匯入 Excel 資料,而不需要在系統上安裝 Microsoft Excel。 使用 IronXL.Excel 處理 Excel 檔案有哪些好處? IronXL 可讓開發人員使用 C# 來讀取、寫入和處理 Excel 檔案,而無需複雜的相依性,並且可在不同的平台上運作。 使用 IronXL 需要安裝 Microsoft Office 嗎? 不會,IronXL.Excel 不需要安裝 Microsoft Office,讓您可以直接在 C# 應用程式中處理 Excel 檔案。 IronXL 可以同時處理 XLSX 和 CSV 檔案格式嗎? 是的,IronXL.Excel 支援多種 Excel 檔案格式,包括 XLSX 和 CSV,使其能滿足不同的資料處理需求。 IronXL 是否適合處理大型 Excel 檔案? 是的,IronXL.Excel 旨在有效處理大型 Excel 檔案,讓開發人員在處理大量資料集時不會產生效能問題。 IronXL 支援哪些平台? IronXL.Excel 與多種平台相容,可跨平台開發和部署處理 Excel 檔案的應用程式。 IronXL.Excel 如何簡化從 Excel 到資料庫的資料遷移? IronXL.Excel 提供從 Excel 表單讀取和匯出資料的直接方法,讓資料傳輸至資料庫更加容易,而無需複雜的編碼。 我可以使用 IronXL 自動產生 Excel 報表嗎? 是的,IronXL.Excel 允許 Excel 報表自動生成,使您能夠以 C# 程式化方式建立和操作 Excel 檔案。 IronXL 是否同時適用於小型和企業級應用程式? IronXL.Excel 功能多樣且可擴充,因此既適用於小型專案,也適用於需要操作 Excel 檔案的大型企業級應用程式。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多 發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多 發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多 C# 寫入 CSV:使用 IronXL 改變您的資料匯出流程如何在 C# 中建立 Excel 資料...
發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多
發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多
發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多