IRONSOFTWAREHOME
USING IRONXL

如何使用 IronXL 在 C# 中讀取 Excel 文件

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在 C# 應用程式中讀取 Excel 文件是商務軟體、資料處理流程和報告系統中反覆出現的需求。 使用 Microsoft Office Interop 的傳統方法需要在每個伺服器或工作站上安裝 Excel,這會導致脆弱的相依性,進而複雜化部署和授權。 IronXL 完全移除了這種相依性——您的應用程式可以在不需安裝 Office 的情況下讀取 XLSX、XLS、CSV 和其他試算表格式。

本教學將帶您學習所有必要的技術:安裝程式庫、載入活頁簿、提取型別化儲存格值、迭代行列、運行集計計算,並建立完整的員工資料讀取程式。 所有範例均使用 C# 並以 .NET 10 為目標。


如何安裝 IronXL 以進行 Excel 處理?

在 Visual Studio 中打開 NuGet 套件管理器控制台,執行以下命令將 IronXL 新增到您的專案。 或者,如果您偏好從終端操作,可以使用第二行所示的 .NET CLI 命令:

PM > Install-Package IronXL.Excel

套件在幾秒內安裝完成,並向您的專案新增一個受管理的程式集參考。 不需 COM 註冊、不需 Office 主要相容程式集,也不需管理特定版本的 Excel 相依性。

安裝後,在所有操作試算表資料的文件頂部新增 using 指令:

using IronXL;

這個單一命名空間可讓您使用 WorkSheet、儲存格範圍、型別化值屬性、集計函式,以及所有其他 IronXL 型別。 IronXL.Excel 的 NuGet Gallery 頁面 列出所有可用版本及其完整的相依樹。


IronXL 支援哪些 Excel 文件格式?

瞭解您的應用程式必須處理的格式會影響您所進行的 API 調用和專案採用的儲存決策。

XLSX——自 Excel 2007 以來的預設格式——是一個 XML 文件的 ZIP 壓縮檔案。 它支持超過一百萬行、豐富的格式化、樞紐分析表和命名範圍。 大多數現代資料管道會輸出 XLSX 格式,因此這是您最常遇到的格式。

XLS 是 Excel 2003 及更早版本使用的舊二進制格式。 一些企業系統仍然輸出 XLS 格式,因此在與舊基礎設施整合時,可靠的支援此格式很重要。 IronXL 無需任何特殊配置即可讀取 XLS 文件。

XLSM 將具宏支援的功能擴展至 XLSX。 IronXL 能夠讀取來自 XLSM 文件的試算表資料,即使它不執行嵌入的 VBA 程式碼,這是伺服器端資料提取的正確行為。

CSV 和 TSV 是廣泛用於系統間資料交換的純文字表格格式。 WorkBook.LoadCSV 處理逗號分隔的文件,IronXL 返回相同的 WorkBook 物件,您的程式碼已知道如何導航,因此無論來源格式為何,您的資料讀取邏輯都保持一致。

當您打開 WorkBook.Load 時,IronXL 會自動從文件副檔名檢測文件格式。 在大多數情況下,您不需要明確指定格式,這簡化了必須處理來自多個來源的輸入的程式碼。

IronXL 支援的 Excel 文件格式
格式擴展名載入方法註釋
開放 XML 活頁簿.xlsxWorkBook.Load預設現代格式
舊二進制格式.xlsWorkBook.LoadExcel 2003 及更早版本
支持宏.xlsmWorkBook.Load資料讀取;不執行宏
逗號分隔.csvWorkBook.LoadCSV優化的 CSV 解析器
制表符分隔.tsvWorkBook.Load制表符分隔變體

如何載入和讀取 Excel 活頁簿?

WorkBook.Load 方法是所有基於文件的操作的進入點。 傳遞文件路徑後,IronXL 返回一個完全填充的活頁簿物件,您可以立即查詢:

using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");

DefaultWorkSheet 屬性返回第一張工作表,適用於大多數單張工作表文件。 當您的文件包含多張工作表時,GetWorkSheet 可按名稱檢索,WorkSheets[n] 可按零索引檢索。 WorkBook API 參考文件了活頁簿物件上的每個重載和屬性。

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 1 - 安裝

輸入

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 2 - Excel 範例輸入

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 3 - 主控台輸出


如何從 Excel 讀取型別化儲存格值?

在 IronXL 中,每個儲存格都公開型別化屬性,返回您所需精確型別的值——無需手動解析或轉型。 型別化屬性會自動處理來自基礎儲存格表示的強制轉型:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}

Text 屬性返回與 Excel 中格式化一樣的顯示值——當您需要格式化數字字串而不是原始數字時特別有用。 對於包含 Excel 公式 的儲存格,IronXL 評估表達式並通過相同的型別化屬性返回計算結果。 附加值屬性——FloatValue——出現在 儲存格值參考中。


如何迭代 Excel 的行和列?

處理資料集中每條記錄需要逐行逐列迭代。 IronXL 的範圍語法直接映射到 Excel 的 A1 標記法,因此選擇儲存格區塊對於任何曾編寫試算表公式的人來說都很熟悉:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}

範圍 sheet["B2:B100"] 返回可列舉的儲存格物件集合。 檢查 string.IsNullOrEmpty 能夠優雅地跳過空行。 Rows 屬性——在 工作表資料範圍指南中有文件記錄——一次走訪工作表一行,公開每行的儲存格,而無需您事先知道欄數。

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 4 - Excel 行輸出


如何在 Excel 資料上運行集計計算?

IronXL 包含內建的 集計函式,直接在儲存格範圍內計算結果——無需手動累加迴圈:

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");

MaxAvg 自動跳過空儲存格並在背後處理數字轉換。 在範圍上連結 LINQ 查詢可為您提供篩選的集計結果——部門小計、日期範圍總和以及條件計數——都無需離開 IronXL API。


如何建立完整的員工資料讀取器?

以下範例將迄今為止覆蓋的所有內容組合成一個生產就緒的主控台應用程式,載入員工試算表、格式化每條記錄、累計工資總額、處理回寫並優雅地捕獲錯誤:

using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}

while 迴圈在 A 欄變為空時終止,這使得讀取器能夠適應任何長度的試算表,而無需硬編碼行數。 寫回值與讀取使用相同的儲存格地址語法,並且 SaveAs 將更改保存到新文件,使原始文件保持不變。 try/catch 塊處理缺失文件、鎖定的活頁簿和損壞的資料——這些都是在生產環境中發生的外部來源到來的輸入文件的所有場景。

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 5 - 員工資料輸出

建立試算表的指南XLSX 轉換為 CSV 的指南展示了如何在端到端工作流中結合讀取和寫入。 儲存格樣式指南涵蓋了當格式化輸出是一種要求時的字體大小、顏色和邊框。

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 6 - Windows 表單輸出


如何處理進階的讀取場景?

在實際專案中會出現一些不常見但重要的場景。 命名範圍、工作表探索和 CSV 載入各自具有專門的 API 支援。

命名範圍使您能按邏輯標籤而不是儲存格地址來引用資料。 如果活頁簿作者定義了一個名為 SalaryTable 的命名範圍,則您可以直接通過 GetRangeByName 存取它:

var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");

工作表探索可枚舉活頁簿中的每個工作表,在處理具有可變數量標籤的文件時非常有用:

foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");

CSV 載入使用專用方法,優化純文字文件,返回 WorkSheet,您可以使用相同的範圍 API 進行瀏覽:

WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);

這些模式涵蓋了出現在資料遷移專案、ETL 流程和自動化報告系統中的進階讀取場景。 有關完整的 API 表面,請參閱 IronXL 物件參考

其他權威參考:


您接下來的步驟是什麼?

IronXL 將 Excel 文件讀取從充滿相依的 Interop 挑戰轉化為幾行簡單的 C# 程式碼。 載入活頁簿、提取型別化值、逐行迭代、運行集計計算和處理邊緣案例都遵循相同的一致 API 模式——在您的部署環境中無需安裝 Microsoft Office。

從教學轉移到生產:

  1. 開始免費試用以解鎖完整的 IronXL 功能集,並在承諾購買授權之前對您的 Excel 文件進行驗證。
  2. 瀏覽 完整的 IronXL 文件以獲取編寫、格式化、樣式和轉換試算表的指南。
  3. 探索 物件參考和完整的 API以發現程式庫中可用的每個類、方法和屬性。
  4. 當您的工作流程需要生成輸出文件以及讀取輸入文件時,查看 建立試算表的指南
  5. 查看 IronXL 部落格文章索引以獲取其他教程,涵蓋如報告生成、資料驗證和多表合併等實際場景。
Curtis Chau
技術作家

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

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立