IronXL 教程 如何在 C# 中讀取 Excel 文件 如何在不使用互通的情況下用 C# 讀取 Excel 檔案:完整開發者指南 Jacob Mellor 更新:1月 10, 2026 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English 使用 IronXL 掌握 C# 中的 Excel 檔案操作-IronXL 是一個強大的 .NET 函式庫,無需安裝 Microsoft Office 即可讀取、驗證和匯出電子表格資料。 本教學課程全面示範了 Excel 的實用操作,包括資料驗證、資料庫轉換和 REST API 整合。 快速入門:使用 IronXL 一行人讀取儲存格 使用 IronXL,只需一行程式碼即可載入 Excel 工作簿並擷取儲存格的值。 它的設計宗旨是方便易用——無需互操作,無需複雜設定——只需快速存取您的資料。 立即開始使用 NuGet 建立 PDF 檔案: 使用 NuGet 套件管理器安裝 IronXL PM > Install-Package IronXL.Excel 複製並運行這段程式碼。 var value = IronXL.WorkBook.Load("file.xlsx").GetWorkSheet(0)["A1"].StringValue; 部署到您的生產環境進行測試 立即開始在您的專案中使用 IronXL,免費試用! 免費試用30天 如何設定 IronXL 以用 C# 讀取 Excel 檔案? 在 C# 專案中設定 IronXL 以讀取 Excel 檔案只需幾分鐘。 該庫同時支援`.XLS`和`.XLSX`格式,使其能夠勝任任何與 Excel 相關的任務。 請依照以下步驟開始: 1.[下載用於讀取 Excel 檔案的 C# 函式庫](https://nuget.org/packages/IronXL.Excel/) 2. 使用`WorkBook.Load()`載入並讀取 Excel 工作簿 3. 使用`GetWorkSheet()`方法存取工作表 4. 使用直覺的語法讀取儲存格值,例如`sheet["A1"].Value` 5. 以程式方式驗證和處理電子表格數據 6. 使用 Entity Framework 將資料匯出到資料庫 IronXL 擅長使用 C# 讀取和編輯 Microsoft Excel 文件。 該程式庫獨立運作-它既不需要 Microsoft Excel 也不需要[Interop](https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel?view=excel-pia)即可運作。 事實上, [IronXL 提供的 API 比 Microsoft.Office.Interop.Excel 更快、更直覺](/csharp/excel/blog/compare-to-other-components/microsoft-office-excel-interop-alternative/)。 IronXL包含: - 我們的 .NET 工程師提供專屬產品支持 - 透過 Microsoft Visual Studio 輕鬆安裝 - 免費試用版,供開發使用。 `liteLicense`的授權條款 使用 IronXL 軟體庫,在 C# 和 VB.NET 中讀取和建立 Excel 檔案變得非常簡單。 ### 使用 IronXL 讀取 .XLS 和 .XLSX Excel 文件 以下是使用 IronXL 讀取 Excel 檔案的基本工作流程: 1. 透過[NuGet 套件](https://www.nuget.org/packages/IronXL.Excel/)安裝 IronXL Excel 函式庫,或下載[.NET Excel DLL](/csharp/excel/packages/IronXL.zip)檔。 2. 使用`WorkBook.Load()`方法讀取任何 XLS、XLSX 或 CSV 文檔 3. 使用直覺的語法存取`sheet["A11"].DecimalValue` DecimalValue ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-1.cs ``` 這段程式碼示範了 IronXL 的幾個關鍵功能:載入工作簿、按位址存取儲存格、遍歷範圍以及執行計算。 `WorkBook.Load()`方法可以智慧地偵測檔案格式,而範圍語法`["A2:A10"]`則提供了類似 Excel 的儲存格選擇功能。 LINQ 整合支援對單元格集合進行強大的資料查詢和聚合。 本教學中的程式碼範例使用三個範例 Excel 電子表格,分別展示了不同的資料場景: [Visual Studio 解決方案資源管理器中顯示了三個 Excel 電子表格檔案](/img/tutorials/how-to-read-excel-file-csharp/vs-spreadsheets.png)。 *本教學中用於示範各種 IronXL 操作的範例 Excel 檔案(GDP.xlsx、People.xlsx 和 PopulationByState.xlsx)。* --- ## 如何安裝 IronXL C# 庫? !{--01001100010010010100001001010010010000010101001001011001010111110101001101010100010001010101010 10100010111110101010001010010010010010100000101001100010111110100001001001100010011111010000100100110001001111010101 --- 安裝`IronXL.Excel`程式庫可為您的 .NET 框架專案新增全面的 Excel 功能。 選擇 NuGet 安裝或手動 DLL 整合。 ### 安裝 IronXL NuGet 套件 1. 在 Visual Studio 中,右鍵單擊您的項目,然後選擇"管理 NuGet 套件..." 2. 在"瀏覽"標籤中搜尋"IronXL.Excel" 3. 點選"安裝"按鈕,將 IronXL 新增到您的專案中。 [NuGet 套件管理器介面顯示 IronXL.Excel 套件的安裝](/img/tutorials/how-to-read-excel-file-csharp/ef-nuget.png) *透過 Visual Studio 的 NuGet 套件管理器安裝 IronXL 可實現自動相依性管理。* 或者,使用軟體套件管理器控制台安裝 IronXL: 1. 開啟套件管理員控制台(工具 → NuGet 套件管理器 → 套件管理員控制台) 2. 運行安裝命令: ```shell :ProductInstall ``` 您也可以[在 NuGet 網站上查看軟體包詳細資訊](https://www.nuget.org/packages/IronXL.Excel/)。 ### 手動安裝 如需手動安裝,請下載 IronXL [.NET Excel DLL](/csharp/excel/packages/IronXL.zip)並直接引用到您的 Visual Studio 專案中。 ## 如何載入和讀取Excel工作簿? [`WorkBook`](/csharp/excel/object-reference/api/IronXL.WorkBook.html)類別代表整個 Excel 檔案。使用`WorkBook.Load()`方法載入 Excel 文件,該方法接受 XLS、XLSX、CSV 和 TSV 格式的文件路徑。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-2.cs ``` 每個`WorkBook`包含多個[`WorkSheet`](/csharp/excel/object-reference/api/IronXL.WorkSheet.html)對象,分別代表不同的 Excel 工作表。 使用[`GetWorkSheet()`](/csharp/excel/object-reference/api/IronXL.WorkBook.html#IronXL_WorkBook_GetWorkSheet_System_String_)按名稱存取工作表: ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-3.cs ``` 如何在 C# 中建立新的 Excel 文件? 透過建立具有所需文件格式的`WorkBook`物件來建立新的 Excel 文件。 IronXL 同時支援現代 XLSX 格式和傳統 XLS 格式。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-4.cs ``` 注意:僅在需要與 Excel 2003 及更早版本相容時才使用`ExcelFileFormat.XLS` 。 ## 如何在Excel文件中新增工作表? IronXL `WorkBook`包含一系列工作表。 了解這種結構有助於建立多工作表 Excel 檔案。 [圖示:包含多個工作表的 Workbook](/img/tutorials/how-to-read-excel-file-csharp/work-book.png) *IronXL 中包含多個 WorkSheet 物件的 WorkBook 結構的視覺化表示。* 使用`CreateWorkSheet()`建立新工作表: ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-5.cs ``` ## 如何讀取和編輯單元格值? ### 讀取和編輯單一儲存格 透過工作表的索引器屬性存取單一儲存格。 IronXL 的[`Cell`](/csharp/excel/object-reference/api/IronXL.Cell.html)類別提供強類型值屬性。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-6.cs ``` `Cell`類別為不同的資料類型提供了多個屬性,並在可能的情況下自動轉換值。 如需更多儲存格操作,請參閱[儲存格格式設定教學](/csharp/excel/how-to/set-cell-data-format/)。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-7.cs ``` ## 如何使用單元格區域? [`Range`](/csharp/excel/object-reference/api/IronXL.Range.html)類別表示儲存格集合,可以對 Excel 資料進行批次操作。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-8.cs ``` 當單元格數量已知時,使用循環高效處理範圍: ```cs // Data validation example public class ValidationResult { public int Row { get; set; } public string PhoneError { get; set; } public string EmailError { get; set; } public string DateError { get; set; } public bool IsValid => string.IsNullOrEmpty(PhoneError) && string.IsNullOrEmpty(EmailError) && string.IsNullOrEmpty(DateError); } // Validate data in rows 2-101 var results = new List(); for (int row = 2; row <= 101; row++) { var result = new ValidationResult { Row = row }; // Get row data efficiently var phoneCell = workSheet[$"B{row}"]; var emailCell = workSheet[$"D{row}"]; var dateCell = workSheet[$"E{row}"]; // Validate phone number if (!IsValidPhoneNumber(phoneCell.StringValue)) result.PhoneError = "Invalid phone format"; // Validate email if (!IsValidEmail(emailCell.StringValue)) result.EmailError = "Invalid email format"; // Validate date if (!dateCell.IsDateTime) result.DateError = "Invalid date format"; results.Add(result); } // Helper methods bool IsValidPhoneNumber(string phone) => System.Text.RegularExpressions.Regex.IsMatch(phone, @"^\d{3}-\d{3}-\d{4}$"); bool IsValidEmail(string email) => email.Contains("@") && email.Contains("."); ``` ## 如何在Excel表格中新增公式? 使用[`Formula`](/csharp/excel/object-reference/api/IronXL.Cell.html#IronXL_Cell_Formula)屬性來套用Excel公式。 IronXL 支援標準 Excel 公式語法。 ```csharp :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-9.cs ``` 若要編輯現有公式,請參閱[Excel 公式教學](/csharp/excel/how-to/edit-formulas/)。 ## 如何驗證電子表格資料? IronXL 為電子表格提供全面的資料驗證功能。 本範例使用外部程式庫和內建的 C# 功能來驗證電話號碼、電子郵件和日期。 ```cs using System.Text.RegularExpressions; using IronXL; // Validation implementation for (int i = 2; i <= 101; i++) { var result = new PersonValidationResult { Row = i }; results.Add(result); // Get cells for current person var cells = workSheet[$"A{i}:E{i}"].ToList(); // Validate phone (column B) string phone = cells[1].StringValue; if (!Regex.IsMatch(phone, @"^\+?1?\d{10,14}$")) { result.PhoneNumberErrorMessage = "Invalid phone format"; } // Validate email (column D) string email = cells[3].StringValue; if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) { result.EmailErrorMessage = "Invalid email address"; } // Validate date (column E) if (!cells[4].IsDateTime) { result.DateErrorMessage = "Invalid date format"; } } ``` 驗證結果儲存到新工作表: ```cs // Create results worksheet var resultsSheet = workBook.CreateWorkSheet("ValidationResults"); // Add headers resultsSheet["A1"].Value = "Row"; resultsSheet["B1"].Value = "Valid"; resultsSheet["C1"].Value = "Phone Error"; resultsSheet["D1"].Value = "Email Error"; resultsSheet["E1"].Value = "Date Error"; // Style headers resultsSheet["A1:E1"].Style.Font.Bold = true; resultsSheet["A1:E1"].Style.SetBackgroundColor("#4472C4"); resultsSheet["A1:E1"].Style.Font.Color = "#FFFFFF"; // Output validation results for (int i = 0; i < results.Count; i++) { var result = results[i]; int outputRow = i + 2; resultsSheet[$"A{outputRow}"].Value = result.Row; resultsSheet[$"B{outputRow}"].Value = result.IsValid ? "Yes" : "No"; resultsSheet[$"C{outputRow}"].Value = result.PhoneNumberErrorMessage ?? ""; resultsSheet[$"D{outputRow}"].Value = result.EmailErrorMessage ?? ""; resultsSheet[$"E{outputRow}"].Value = result.DateErrorMessage ?? ""; // Highlight invalid rows if (!result.IsValid) { resultsSheet[$"A{outputRow}:E{outputRow}"].Style.SetBackgroundColor("#FFE6E6"); } } // Auto-fit columns for (int col = 0; col < 5; col++) { resultsSheet.AutoSizeColumn(col); } // Save validated workbook workBook.SaveAs(@"Spreadsheets\PeopleValidated.xlsx"); ``` ## 如何將Excel資料匯出到資料庫? 使用 IronXL 和 Entity Framework 將電子表格資料直接匯出到資料庫。 本範例示範如何將國家/地區 GDP 資料匯出到 SQLite。 ```cs using System; using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; using IronXL; // Define entity model public class Country { [Key] public Guid Id { get; set; } = Guid.NewGuid(); [Required] [MaxLength(100)] public string Name { get; set; } [Range(0, double.MaxValue)] public decimal GDP { get; set; } public DateTime ImportedDate { get; set; } = DateTime.UtcNow; } ``` 配置用於資料庫操作的 Entity Framework 上下文: ```cs public class CountryContext : DbContext { public DbSet Countries { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Configure SQLite connection optionsBuilder.UseSqlite("Data Source=CountryGDP.db"); // Enable sensitive data logging in development #if DEBUG optionsBuilder.EnableSensitiveDataLogging(); #endif } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Configure decimal precision modelBuilder.Entity() .Property(c => c.GDP) .HasPrecision(18, 2); } } ``` 請注意注意:若要使用不同的資料庫,請安裝對應的 NuGet 套件(例如,SQL Server 需要`Microsoft.EntityFrameworkCore.SqlServer` ),並相應地修改連線配置。 將Excel資料匯入資料庫: ```cs using System.Threading.Tasks; using IronXL; using Microsoft.EntityFrameworkCore; public async Task ImportGDPDataAsync() { try { // Load Excel file var workBook = WorkBook.Load(@"Spreadsheets\GDP.xlsx"); var workSheet = workBook.GetWorkSheet("GDPByCountry"); using (var context = new CountryContext()) { // Ensure database exists await context.Database.EnsureCreatedAsync(); // Clear existing data (optional) await context.Database.ExecuteSqlRawAsync("DELETE FROM Countries"); // Import data with progress tracking int totalRows = 213; for (int row = 2; row <= totalRows; row++) { // Read country data var countryName = workSheet[$"A{row}"].StringValue; var gdpValue = workSheet[$"B{row}"].DecimalValue; // Skip empty rows if (string.IsNullOrWhiteSpace(countryName)) continue; // Create and add entity var country = new Country { Name = countryName.Trim(), GDP = gdpValue * 1_000_000 // Convert to actual value if in millions }; await context.Countries.AddAsync(country); // Save in batches for performance if (row % 50 == 0) { await context.SaveChangesAsync(); Console.WriteLine($"Imported {row - 1} of {totalRows} countries"); } } // Save remaining records await context.SaveChangesAsync(); Console.WriteLine($"Successfully imported {await context.Countries.CountAsync()} countries"); } } catch (Exception ex) { Console.WriteLine($"Import failed: {ex.Message}"); throw; } } ``` ## 如何將API資料匯入Excel表格? 將 IronXL 與 HTTP 用戶端結合使用,即可使用即時 API 資料填入電子表格。 本範例使用[RestClient.Net](https://github.com/MelbourneDeveloper/RestClient.Net)取得國家/地區資料。 ```cs using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; using IronXL; // Define data model matching API response public class RestCountry { public string Name { get; set; } public long Population { get; set; } public string Region { get; set; } public string NumericCode { get; set; } public List Languages { get; set; } } public class Language { public string Name { get; set; } public string NativeName { get; set; } } // Fetch and process API data public async Task ImportCountryDataAsync() { using var httpClient = new HttpClient(); try { // Call REST API var response = await httpClient.GetStringAsync("https://restcountries.com/v3.1/all"); var countries = JsonConvert.DeserializeObject>(response); // Create new workbook var workBook = WorkBook.Create(ExcelFileFormat.XLSX); var workSheet = workBook.CreateWorkSheet("Countries"); // Add headers with styling string[] headers = { "Country", "Population", "Region", "Code", "Language 1", "Language 2", "Language 3" }; for (int col = 0; col < headers.Length; col++) { var headerCell = workSheet[0, col]; headerCell.Value = headers[col]; headerCell.Style.Font.Bold = true; headerCell.Style.SetBackgroundColor("#366092"); headerCell.Style.Font.Color = "#FFFFFF"; } // Import country data await ProcessCountryData(countries, workSheet); // Save workbook workBook.SaveAs("CountriesFromAPI.xlsx"); } catch (Exception ex) { Console.WriteLine($"API import failed: {ex.Message}"); } } ``` API 傳回的 JSON 資料格式如下: [JSON 回應結構顯示了包含巢狀語言數組的國家/地區數據](/img/tutorials/how-to-read-excel-file-csharp/country-data.png) *來自 REST Countries API 的範例 JSON 回應,顯示了分層國家/地區資訊。* 處理 API 資料並寫入 Excel: ```cs private async Task ProcessCountryData(List countries, WorkSheet workSheet) { for (int i = 0; i < countries.Count; i++) { var country = countries[i]; int row = i + 1; // Start from row 1 (after headers) // Write basic country data workSheet[$"A{row}"].Value = country.Name; workSheet[$"B{row}"].Value = country.Population; workSheet[$"C{row}"].Value = country.Region; workSheet[$"D{row}"].Value = country.NumericCode; // Format population with thousands separator workSheet[$"B{row}"].FormatString = "#,##0"; // Add up to 3 languages for (int langIndex = 0; langIndex < Math.Min(3, country.Languages?.Count ?? 0); langIndex++) { var language = country.Languages[langIndex]; string columnLetter = ((char)('E' + langIndex)).ToString(); workSheet[$"{columnLetter}{row}"].Value = language.Name; } // Add conditional formatting for regions if (country.Region == "Europe") { workSheet[$"C{row}"].Style.SetBackgroundColor("#E6F3FF"); } else if (country.Region == "Asia") { workSheet[$"C{row}"].Style.SetBackgroundColor("#FFF2E6"); } // Show progress every 50 countries if (i % 50 == 0) { Console.WriteLine($"Processed {i} of {countries.Count} countries"); } } // Auto-size all columns for (int col = 0; col < 7; col++) { workSheet.AutoSizeColumn(col); } } ``` --- ## 物件參考和資源 查閱全面的[IronXL API 參考文檔](/csharp/excel/object-reference/api/),以了解詳細的類文檔和高級功能。 更多Excel操作教學: -[透過程式設計方式建立 Excel 文件](/csharp/excel/tutorials/create-excel-file-net/) [Excel格式和樣式指南](/csharp/excel/how-to/set-cell-data-format/) -[使用Excel公式](/csharp/excel/how-to/edit-formulas/) - [Excel圖表建立教程](/csharp/excel/how-to/csharp-excel-chart-create-edit-tutorial/) ## 摘要 IronXL.Excel 是一個功能全面的 .NET 程式庫,用於讀取和操作各種格式的 Excel 檔案。 它無需安裝[Microsoft Excel](https://products.office.com/en-us/excel)或 Interop 即可獨立運行。 對於基於雲端的電子表格操作,您還可以探索適用於 .NET 的[Google Sheets API 用戶端程式庫](https://developers.google.com/api-client-library/dotnet/apis/sheets/v4),它補充了 IronXL 的本機檔案功能。 準備好在 C# 專案中實現 Excel 自動化了嗎? [下載 IronXL](download-modal)或了解適用於生產環境的[授權選項](/csharp/excel/licensing/)。 常見問題解答 如何在 C# 中讀取 Excel 文件而不使用 Microsoft Office? 您可以使用 IronXL 在 C# 中讀取 Excel 文件,無需 Microsoft Office。IronXL 提供像 WorkBook.Load() 這樣的方法來打開 Excel 文件,並允許您使用直觀的語法訪問和操作數據。 可以使用 C# 讀取哪些格式的 Excel 文件? 使用 IronXL,您可以在 C# 中讀取 XLS 和 XLSX 文件格式。該庫自動檢測文件格式,並使用 WorkBook.Load() 方法相應地處理。 如何在 C# 中驗證 Excel 數據? IronXL 允許您在 C# 中以程式方式驗證 Excel 數據,通過迭代單元格並應用邏輯,如電子郵件正則表達式或自定義驗證函數。您可以使用 CreateWorkSheet() 生成報告。 如何使用 C# 將 Excel 數據導出到 SQL 數據庫? 要將 Excel 數據導出到 SQL 數據庫,使用 IronXL 讀取 Excel 數據配合 WorkBook.Load() 和 GetWorkSheet() 方法,然後遍歷單元格以通過 Entity Framework 將數據轉移到數據庫。 是否可以將 Excel 功能集成到 ASP.NET Core 應用程序中? 是的,IronXL 支持與 ASP.NET Core 應用程序集成。您可以在控制器中使用 WorkBook 和 WorkSheet 類來處理 Excel 文件上傳、生成報告等。 可以使用 C# 向 Excel 表格添加公式嗎? IronXL 允許您以程式方式向 Excel 表格添加公式。您可以使用 Formula 屬性設置公式,如 cell.Formula = "=SUM(A1:A10)",並通過 workBook.EvaluateAll() 計算結果。 如何使用 REST API 的數據填充 Excel 文件? 要使用 REST API 的數據填充 Excel 文件,使用 IronXL 配合 HTTP 客戶端獲取 API 數據,然後使用 sheet["A1"].Value 等方法將其寫入 Excel。IronXL 管理 Excel 的格式和結構。 在生產環境中使用 Excel 庫的授權選項有哪些? IronXL 提供用於開發目的的免費試用版,而生產許可證從 $749 起。這些許可證包含專業技術支持,且允許在各種環境中部署,而無需額外的 Office 許可證。 Jacob Mellor 立即與工程團隊聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。 準備好開始了嗎? Nuget 下載 1,765,830 | 版本: 2025.12 剛發表 免費下載 NuGet 下載總數:1,765,830 檢視授權