使用 IRONXL 如何使用 IronXL 在 C# 中匯入 Excel 資料 Jordi Bardia 更新:2026年2月27日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 對許多 .NET 開發者來說,處理 Microsoft Excel 文件是每天的需求。 不論是匯入客戶資料、處理財務報表,或是從試算表遷移資料到資料庫,開發者需要一個可靠的方法來讀取 Excel 文件,而不需要複雜的相依性或安裝 Excel。 傳統的方法,比如透過 Microsoft.Office.Interop 的 COM 自動化,需要完整的 Office 安裝,會引入平台限制,並產生脆弱的部署依賴。 IronXL 提供了一個簡單的解決方案,可以跨平台運作,消除了所有這些問題,並能直接從託管的 .NET 程式碼進行 Excel 操作。 如何安裝 IronXL 並開始進行 Excel 匯入? 在 C# 中使用 IronXL 進行 Excel 匯入,開始化不過數分鐘。 Excel 程式庫可以處理舊版的 XLS 和現代的 XLSX 格式,以及 CSV、TSV 和其他試算表格式。 不像依賴Microsoft.Office.Interop.Excel 的解決方案,IronXL 可以獨立運行於任何 .NET 或 .NET Core 平台上。 您可以透過 NuGet 套件管理器或 .NET CLI 安裝 IronXL。 您也可以使用 Visual Studio 中的 Manage NuGet Packages 對話框,並搜尋 'IronXL': Install-Package IronXL dotnet add package IronXL Install-Package IronXL dotnet add package IronXL SHELL 有關完整的安裝細節,包括版本相容性和相依性注意事項,請參考 IronXL NuGet 安裝指南。 不需要任何額外的運行時相依性或 Office 元件 —— 套件是自包含的。 一旦安裝完套件,匯入 Excel 資料就變得非常簡單: using IronXL; // 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; // 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); $vbLabelText $csharpLabel 此程式碼展示了核心工作流程:載入工作簿、存取工作表,並讀取儲存格值。 WorkBook.Load() 方法會自動檢測檔案格式 —— 無論是 XLS、XLSX 還是 CSV。直觀的索引語法 sheet["B1"] 使得存取儲存格如同操作陣列一樣自然。 有關可用成員和多載的完整參考,請參見 IronXL API 文件。 示範輸入 輸出 如何將 Excel 資料讀入 C# 物件中? 實際應用需要的不只是單儲存格的值。 IronXL 在匯入整個數據集並將其轉換為可用的 C# 物件方面非常出色。 當您需要匯入結構化 Excel 資料時,程式庫提供多種方法可以直接映射到您的領域模型。 下例讀取了工作表中的資料列,並將每列映射到一個型別化的 Product 物件: using IronXL; // Load the Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Map rows to typed objects 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}" ); } using IronXL; // Load the Excel file WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Map rows to typed objects 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}" ); } $vbLabelText $csharpLabel 型別化的屬性 -- DecimalValue、和 BoolValue -- 自動處理類型轉換。 這種方法消除了手動解析並減少了在處理混合數據型別的列時的錯誤。許多在 Stack Overflow 上的開發者都讚賞這種型別安全的 Excel 資料匯入方法。 輸出 如何運用儲存格範圍和 LINQ? 對於彙總計算和篩選查詢,IronXL 支援具有內建 LINQ 相容性的範圍操作: using IronXL; WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Read a named cell range Range dataRange = sheet["A1:D5"]; // Calculate aggregates directly on a range 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}"); // Filter using LINQ var highValueOrders = dataRange .Where(cell => cell.DecimalValue > 100) .Select(cell => cell.Value) .ToList(); Console.WriteLine("Orders above 100:"); foreach (var order in highValueOrders) { Console.WriteLine(order); } using IronXL; WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Read a named cell range Range dataRange = sheet["A1:D5"]; // Calculate aggregates directly on a range 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}"); // Filter using LINQ var highValueOrders = dataRange .Where(cell => cell.DecimalValue > 100) .Select(cell => cell.Value) .ToList(); Console.WriteLine("Orders above 100:"); foreach (var order in highValueOrders) { Console.WriteLine(order); } $vbLabelText $csharpLabel Range 類提供對多個儲存格的類集合存取。 LINQ 相容性意味著,您可以使用熟悉的 C# 模式篩選、轉換和彙總 Excel 資料,而無需先轉換為中介集合。內建聚合方法例如 Sum() 和 Max() 可以直接在儲存格範圍上運行。 有關閱讀工作簿數據的更多細節,請參見 IronXL 讀取 Excel 檔案指南。 輸出 如何在 C# 裡將 Excel 轉換為 DataTable? DataTable 轉換對於資料庫操作和資料綁定場景是必要的。 IronXL 提供內建的方法來處理從 Excel 到 DataSet 或 DataTable 的轉換。 這個功能特別有用,當您需要將 Excel 試算表匯入 SQL Server 或其他關聯式資料庫時。 因為結果物件是一個標準 System.Data.DataTable,它可以與任何 ADO.NET 相容的程式碼路徑協同工作,無需更改您的資料存取層。 using IronXL; using System.Data; using System.Data.SqlClient; // Load Excel file WorkBook workBook = WorkBook.Load("inventory.xlsx"); // Select the first worksheet WorkSheet sheet = workBook.WorkSheets.First(); // Convert to DataTable -- first row becomes column headers DataTable dataTable = sheet.ToDataTable(true); // Use SqlBulkCopy to insert directly into SQL Server string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;"; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) { bulkCopy.DestinationTableName = "Inventory"; bulkCopy.WriteToServer(dataTable); } using IronXL; using System.Data; using System.Data.SqlClient; // Load Excel file WorkBook workBook = WorkBook.Load("inventory.xlsx"); // Select the first worksheet WorkSheet sheet = workBook.WorkSheets.First(); // Convert to DataTable -- first row becomes column headers DataTable dataTable = sheet.ToDataTable(true); // Use SqlBulkCopy to insert directly into SQL Server string connectionString = "Data Source=.;Initial Catalog=InventoryDB;Integrated Security=True;"; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) { bulkCopy.DestinationTableName = "Inventory"; bulkCopy.WriteToServer(dataTable); } $vbLabelText $csharpLabel ToDataTable() 方法接受一個布林參數,指示第一行是否包含標題。 當設置為 true 時,IronXL 自動使用第一行的值作為列名。 生成的 DataTable 可以與 ADO.NET、Entity Framework 和資料綁定控制項無縫整合,無需任何額外配置。 如果您需要對轉換過程有更多控制,可以手動建構 DataTable: using IronXL; using System.Data; WorkBook workBook = WorkBook.Load("inventory.xlsx"); WorkSheet sheet = workBook.WorkSheets.First(); // Build DataTable manually for custom column types or validation DataTable customTable = new DataTable(); for (int col = 0; col < sheet.ColumnCount; col++) { customTable.Columns.Add($"Column{col + 1}", typeof(string)); } 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 headers foreach (DataColumn column in customTable.Columns) { Console.Write($"{column.ColumnName}\t"); } Console.WriteLine(); // Print data rows foreach (DataRow row in customTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } using IronXL; using System.Data; WorkBook workBook = WorkBook.Load("inventory.xlsx"); WorkSheet sheet = workBook.WorkSheets.First(); // Build DataTable manually for custom column types or validation DataTable customTable = new DataTable(); for (int col = 0; col < sheet.ColumnCount; col++) { customTable.Columns.Add($"Column{col + 1}", typeof(string)); } 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 headers foreach (DataColumn column in customTable.Columns) { Console.Write($"{column.ColumnName}\t"); } Console.WriteLine(); // Print data rows foreach (DataRow row in customTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } $vbLabelText $csharpLabel 這種方法在匯入過程中給予您完全的靈活性。 在轉換為 DBNull.Value 時,空值被優雅地處理,確保與資料庫列約束的相容性。 有關將數據寫回文件的更進一步指導,請參見 IronXL 編寫 Excel 檔案指南。 輸出 如何處理公式、多張工作表和 Entity Framework? IronXL 超越了基本的讀取能力,提供用於複雜現實場景的功能。 程式庫保留了 Excel 公式,允許計算動態評估。 對於處理複雜 Excel 工作簿的開發者,這在匯入過程中維持了數據的完整性。 讀取公式和計算值 using IronXL; WorkBook workBook = WorkBook.Load("FinancialReport.xlsx"); WorkSheet sheet = workBook.GetWorkSheet("Reports"); // Read the evaluated result of a formula cell decimal calculatedTotal = sheet["E10"].DecimalValue; Console.WriteLine($"Total: {calculatedTotal}"); // Read the formula string itself string formula = sheet["E10"].Formula; Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)" using IronXL; WorkBook workBook = WorkBook.Load("FinancialReport.xlsx"); WorkSheet sheet = workBook.GetWorkSheet("Reports"); // Read the evaluated result of a formula cell decimal calculatedTotal = sheet["E10"].DecimalValue; Console.WriteLine($"Total: {calculatedTotal}"); // Read the formula string itself string formula = sheet["E10"].Formula; Console.WriteLine($"Formula: {formula}"); // e.g. "=SUM(E2:E9)" $vbLabelText $csharpLabel 公式支援意味著匯入包含複雜計算的 Excel 文件不需要在代碼中重新創建業務邏輯。 程式庫自動評估公式,返回計算值,同時保留原始公式字串。 當匯入包含嵌套公式的財務模型或報告範本時,這被證明是無價的。 跨平台的相容性確保了在 Windows、Linux、macOS 和容器環境中的一致行為。 這使得 IronXL 非常適合雲端部署和無法安裝 Office 的微服務。 .NET Foundation 的文檔強調了現代 .NET 應用如何受益於平台獨立性。 與 Entity Framework 整合 Excel 資料 Entity Framework 整合創建了直接的 Excel 到數據庫的管道。 以下模式能夠與 .NET 10 的高層次敘述潔淨地運作: using IronXL; WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Skip the header row, map remaining rows to entity objects 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(); await context.Products.AddRangeAsync(products); await context.SaveChangesAsync(); Console.WriteLine($"Imported {products.Count} products."); using IronXL; WorkBook workBook = WorkBook.Load("ProductData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; // Skip the header row, map remaining rows to entity objects 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(); await context.Products.AddRangeAsync(products); await context.SaveChangesAsync(); Console.WriteLine($"Imported {products.Count} products."); $vbLabelText $csharpLabel 這種模式使得最少代碼可以直接進行 Excel 到數據庫的遷移,非常適合 ETL 流程、一次性數據遷移和計劃的匯入作業。 因為 LINQ 投影在上下文保存前運行於記憶體中,您可以在同一個步驟應用驗證或轉換邏輯。若要從 C# 資料創建新的 Excel 文件,請參見 IronXL 創建 Excel 檔案指南。 支援的文件格式 IronXL 處理各種試算表格式,無需任何額外的程式庫或 Office 安裝。 下面的表格總結了支援的格式和其使用案例: IronXL 支援的 Excel 文件格式 格式 延伸名 備註 Excel 工作簿 .xlsx Excel 2007 及其後版本的預設格式 舊版 Excel 工作簿 .xls 與較舊版的 Excel 版本相容 逗號分隔值 .csv 純文字標籤數據,被廣泛支援 標籤分隔值 .tsv 適合含有內嵌逗號的數據 Excel 二進位工作簿 .xlsb 適用於大型文件的壓縮二進位格式 有關將數據匯出回這些格式的更多資訊,請參見 IronXL 匯出 Excel 指南。 如何在匯入期間處理儲存格格式? 當您匯入 Excel 文件時,保留或檢查儲存格格式通常與讀取原始值一樣重要。 IronXL 為每個儲存格公開字體、顏色、對齊和邊框屬性,因此您可以應用驗證規則或以程式化方式再現樣式。 這在報表中尤其有用,其中視覺格式傳遞語義意涵 —— 例如,表示風險等級的著色儲存格,或標記總計的粗體行。 例如,您可能希望檢查儲存格是否包含粗體文字 —— 這是常見的信號表明某行是摘要或總計行 —— 在決定是否將其納入匯入的數據集中之前: using IronXL; WorkBook workBook = WorkBook.Load("StyledReport.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; foreach (var row in sheet.Rows) { var firstCell = row.Columns[0]; // Skip rows where the first cell is bold (typically header or total rows) if (firstCell.Style.Font.Bold) { continue; } Console.WriteLine($"Data row: {firstCell.StringValue}"); } using IronXL; WorkBook workBook = WorkBook.Load("StyledReport.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; foreach (var row in sheet.Rows) { var firstCell = row.Columns[0]; // Skip rows where the first cell is bold (typically header or total rows) if (firstCell.Style.Font.Bold) { continue; } Console.WriteLine($"Data row: {firstCell.StringValue}"); } $vbLabelText $csharpLabel 關於儲存格和範圍格式的完整參考,包括數字格式字串和背景顏色存取,請參見 IronXL 儲存格格式指南。 您還可以在處理後將合併操作應用於輸出文件 —— 請參見 IronXL 合併儲存格指南。 如何為您的專案選擇合適的 IronXL 授權? IronXL 提供靈活的授權選項來符合您的專案規模。 免費試用授權 可用於評估,可以在開發期間無時間限制地訪問所有功能。 試用版會在輸出文件上添加浮水印,可用有效的生產授權刪除。 對於構建生產應用程式的團隊,IronXL 授權 包括適用於個別開發者、團隊和公司範圍部署的選項。 所有生產授權包括: 免版稅再分發權 IronXL 開發團隊的優先支援 在授權期間訪問所有當前和次要版本更新 如果您正在評估 IronXL 以及其他 Excel 程式庫,IronXL 功能概覽 提供了每個層級中所包含內容的詳細分解。 今天就開始在您的專案中使用 IronXL,請造訪 IronXL 產品頁面 或直接從 IronXL 文件 開始以獲得設置指南、使用文章和涵蓋程式庫中所有功能的 API 參考。 常見問題解答 如何在C#中導入Excel資料? 您可以使用 IronXL 輕鬆地在 C# 中匯入 Excel 數據,而無需在您的系統上安裝 Microsoft Excel。 使用IronXL進行Excel文件操作有哪些好處? IronXL 允許開發人員使用 C# 讀取、寫入和操作 Excel 文件,而無需複雜的依賴項,並且可以在不同的平台上運行。 我需要安裝 Microsoft Office 才能使用 IronXL 嗎? 不,IronXL 無需安裝 Microsoft Office,即可直接在 C# 應用程式中處理 Excel 檔案。 IronXL 能否同時處理 XLSX 與 CSV 檔案格式? 是的,IronXL 支援多種 Excel 檔案格式,包括 XLSX 和 CSV,使其能夠靈活滿足不同的資料處理需求。 IronXL 是否適合處理大型 Excel 檔案? 是的,IronXL 的設計宗旨就是高效處理大型 Excel 文件,使開發人員能夠處理龐大的資料集而不會出現效能問題。 IronXL 支援哪些平台? IronXL 與多個平台相容,可實現處理 Excel 檔案的應用程式的跨平台開發和部署。 IronXL 如何簡化從 Excel 到資料庫的資料遷移? IronXL 提供了從 Excel 表格讀取和匯出資料的簡單方法,無需複雜的編碼即可更輕鬆地將資料傳輸到資料庫。 我可以使用 IronXL 自動產生 Excel 報表嗎? 是的,IronXL 允許自動產生 Excel 報表,讓您能夠使用 C# 以程式設計方式建立和操作 Excel 檔案。 IronXL 是否既適用於小規模應用也適用於企業級應用? IronXL 功能多樣且可擴展,既適用於小型項目,也適用於需要 Excel 檔案操作的大型企業級應用程式。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多 更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多 更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多 如何使用 IronXL 在 C# 中寫入 CSV 檔案如何在 C# 中創建 Excel 樞紐...
更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多
更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多
更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多