跳過到頁腳內容
使用 IRONXL

使用 IronXL.Excel 在 C# 中讀取 Excel 檔案的最佳方法

各位好,如果您一直在尋找用 C# 閱讀 Excel 檔案的最佳方法,而不需要複雜的設定,本教學正是您所需要的。 IronXL for .NET 是一個 .NET 函式庫,讓 Excel 檔案的管理變得非常簡單,最棒的是什麼? 不需要在您的系統上安裝 Microsoft Excel。

以程式化的方式處理 Microsoft Excel 檔案向來都很具挑戰性。 許多函式庫需要 Office 的依賴,或產生冗長、容易出錯的程式碼。 IronXL 透過提供乾淨、直覺式的 API 來改變這一情況,以最小的工作量處理 XLSX、XLS 和 CSV 檔案。 準備好開始? 註冊免費試用並跟隨使用。

在 C# 中讀取 Excel 檔案的最佳方式是什麼;?

在 C# 中讀取 Excel 檔案的最佳方法是使用 IronXL 之類的專用函式庫,該函式庫獨立於 Microsoft Office 運作。這種方法在 .NET Framework 和 .NET Core 專案中都運作良好,讓使用者解析試算表資料時,不會為版本相容性而頭痛。

IronXL.Excel 基本上提供一個 Excel 閱讀器,可將整個檔案載入工作簿物件,讓您直接存取每個工作表、每行、每列和每個儲存格。 與需要管理隱藏複雜性的基於 XML 的解決方案不同,IronXL.Excel 的 API 可讓您使用熟悉的 Excel 符號(如 sheet["A1"] )參照單元,或使用 foreach 環路遍歷整個範圍。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

如何在 Visual Studio 中安裝 Excel Reader 函式庫?

透過 Visual Studio 中的 NuGet 安裝只需數秒。 在套件管理員控制台執行此指令:

Install-Package IronXL.Excel

該函式庫支援多種 .NET 版本,因此無論您的應用程式以 .NET Framework 4.6.2+ 或 .NET Core 3.1+ 為目標,IronXL 都能無縫整合。 安裝完成後,將 IronXL 參考檔加入您的程式碼檔案,就可以開始閱讀 Excel 檔案了。

如何載入和讀取 Excel 工作簿?

載入 Excel 工作簿只需要一行程式碼。 WorkBook.Load 方法接受檔案名稱,並自動偵測格式,XLSX 檔案、XLS 檔案或 CSV 檔案的運作方式都相同。

class Program
{
    public static void Main(string[] args)
    {
        // Load an Excel workbook from file
        WorkBook workbook = WorkBook.Load("financial_report.xlsx");
        // Access the first worksheet by index
        WorkSheet worksheet = workbook.WorkSheets[0];
        // Or get a specific sheet by name
        WorkSheet dataSheet = workbook.GetWorkSheet("Expenses");
        Console.WriteLine($"Loaded workbook with {workbook.WorkSheets.Count} sheets");
    }
}
class Program
{
    public static void Main(string[] args)
    {
        // Load an Excel workbook from file
        WorkBook workbook = WorkBook.Load("financial_report.xlsx");
        // Access the first worksheet by index
        WorkSheet worksheet = workbook.WorkSheets[0];
        // Or get a specific sheet by name
        WorkSheet dataSheet = workbook.GetWorkSheet("Expenses");
        Console.WriteLine($"Loaded workbook with {workbook.WorkSheets.Count} sheets");
    }
}
Option Strict On



Class Program
    Public Shared Sub Main(ByVal args As String())
        ' Load an Excel workbook from file
        Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
        ' Access the first worksheet by index
        Dim worksheet As WorkSheet = workbook.WorkSheets(0)
        ' Or get a specific sheet by name
        Dim dataSheet As WorkSheet = workbook.GetWorkSheet("Expenses")
        Console.WriteLine($"Loaded workbook with {workbook.WorkSheets.Count} sheets")
    End Sub
End Class
$vbLabelText   $csharpLabel

載入工作簿的控制台確認

使用 IronXL 在 C# 中讀取 Excel 檔案的最佳方法:圖像 1 - 確認已載入工作簿的控制台輸出

WorkBook 物件代表整個 Excel 工作簿,而每個 WorkSheet 實例對應該工作簿中的單獨工作表。 此結構反映 Excel 格式組織資料的方式,讓已熟悉試算表概念的開發人員可以直覺地使用 API。

載入檔案時,IronXL 會將所有儲存格、公式和格式解析至記憶體中。 然後您可以讀取數值、修改內容或將變更儲存回磁碟。 有關載入選項的其他資訊,請參閱 載入試算表文件

如何從 Excel 工作表中讀取儲存格值?

讀取儲存格包括透過位址存取儲存格或透過範圍迭代。 IronXL 提供 StringValue、IntValue 和 DecimalValue 等強排序屬性,可將儲存格資料解析為正確的系統類型。

using IronXL;
using System;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read individual cell values with type conversion
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
// Check for null or empty cells before processing
var cell = sheet["D2"];
if (cell.Value != null)
{
    Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price}");
}
// Access cells using row and column index (zero-based)
int columnIndex = 0;
var firstCell = sheet.Rows[1].Columns[columnIndex];
using IronXL;
using System;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read individual cell values with type conversion
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
// Check for null or empty cells before processing
var cell = sheet["D2"];
if (cell.Value != null)
{
    Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price}");
}
// Access cells using row and column index (zero-based)
int columnIndex = 0;
var firstCell = sheet.Rows[1].Columns[columnIndex];
Imports IronXL
Imports System

Dim workbook As WorkBook = WorkBook.Load("Products.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read individual cell values with type conversion
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim price As Decimal = sheet("C2").DecimalValue
' Check for null or empty cells before processing
Dim cell = sheet("D2")
If cell.Value IsNot Nothing Then
    Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price}")
End If
' Access cells using row and column index (zero-based)
Dim columnIndex As Integer = 0
Dim firstCell = sheet.Rows(1).Columns(columnIndex)
$vbLabelText   $csharpLabel

輸出

使用 IronXL 在 C# 中讀取 Excel 檔案的最佳方法:圖像 2 - 使用 IronXL 簡單讀取 Excel 輸出

每個儲存格物件包含原始值加上格式化的元資料。 當您需要程式化的欄位存取,而非基於字母的參照時,int columnIndex 方法就很好用。 如果儲存格包含公式,IronXL 會評估公式並傳回計算結果。

如何迭代行和儲存格?

處理整個檔案通常需要在行和單元格之間進行循環。 foreach 模式使其優雅且易讀,非常適合資料抽取或驗證任務。

using IronXL;
using System;
 WorkBook workbook = WorkBook.Load(@"financial_report.xlsx");
 WorkSheet sheet = workbook.WorkSheets[0];
 // Skip column headers in first row, process data rows
 foreach (var row in sheet["A2:D7"])
 {
     Console.WriteLine($"Cell {row.AddressString}: {row.Text}");
 }
 // Iterate through specific row range
 for (int i = 1; i < sheet.Rows.Length; i++)
 {
     var currentRow = sheet.Rows[i];
     // Access each column in the row
     foreach (var cell in currentRow)
     {
         if (cell.Value != null)
         {
             Console.Write($"{cell.StringValue}\t");
         }
     }
     Console.WriteLine();
 }
using IronXL;
using System;
 WorkBook workbook = WorkBook.Load(@"financial_report.xlsx");
 WorkSheet sheet = workbook.WorkSheets[0];
 // Skip column headers in first row, process data rows
 foreach (var row in sheet["A2:D7"])
 {
     Console.WriteLine($"Cell {row.AddressString}: {row.Text}");
 }
 // Iterate through specific row range
 for (int i = 1; i < sheet.Rows.Length; i++)
 {
     var currentRow = sheet.Rows[i];
     // Access each column in the row
     foreach (var cell in currentRow)
     {
         if (cell.Value != null)
         {
             Console.Write($"{cell.StringValue}\t");
         }
     }
     Console.WriteLine();
 }
Imports IronXL
Imports System

Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets(0)

' Skip column headers in first row, process data rows
For Each row In sheet("A2:D7")
    Console.WriteLine($"Cell {row.AddressString}: {row.Text}")
Next

' Iterate through specific row range
For i As Integer = 1 To sheet.Rows.Length - 1
    Dim currentRow = sheet.Rows(i)
    ' Access each column in the row
    For Each cell In currentRow
        If cell.Value IsNot Nothing Then
            Console.Write($"{cell.StringValue}" & vbTab)
        End If
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

Best Way to Read Excel File in C# with IronXL: Image 3 - Output for iterating through rows

範圍語法 ["A2:D100"]會建立一個可迭代的儲存格集合。 此方法可有效處理大型試算表,且不會載入不必要的資料。 當您需要逐行或逐列處理時,也可以直接存取 Rows 和 Columns 集合。

如何解析多種 Excel 格式?

IronXL 可以透明地處理各種 Excel 格式。 無論您是閱讀傳統的 XLS 檔案、現代的 XLSX 檔案或純 CSV 檔案,相同的程式碼都能在所有格式中運作。

using IronXL;
// Load different format types - the API remains consistent
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Data.csv");
// All workbooks expose identical worksheet access
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Write to different formats
xlsxBook.SaveAs("Output.csv");
csvBook.SaveAs("Converted.xlsx");
using IronXL;
// Load different format types - the API remains consistent
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Data.csv");
// All workbooks expose identical worksheet access
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Write to different formats
xlsxBook.SaveAs("Output.csv");
csvBook.SaveAs("Converted.xlsx");
Imports IronXL

' Load different format types - the API remains consistent
Dim xlsxBook As WorkBook = WorkBook.Load("Modern.xlsx")
Dim xlsBook As WorkBook = WorkBook.Load("Legacy.xls")
Dim csvBook As WorkBook = WorkBook.Load("Data.csv")

' All workbooks expose identical worksheet access
Dim sheet1 As WorkSheet = xlsxBook.DefaultWorkSheet
Dim sheet2 As WorkSheet = xlsBook.DefaultWorkSheet
Dim sheet3 As WorkSheet = csvBook.DefaultWorkSheet

' Write to different formats
xlsxBook.SaveAs("Output.csv")
csvBook.SaveAs("Converted.xlsx")
$vbLabelText   $csharpLabel

當您的程式必須處理來自不同來源的檔案時,這種格式上的彈性會很有幫助。 該函式庫可從檔案副檔名和內容標頭自動偵測 Excel 格式,因此您不需要特定格式的程式碼路徑。 對於 CSV 檔案,IronXL 尊重逗號分隔符和引號字串值等常見慣例。

我可以執行哪些進階操作?

除了基本閱讀之外,IronXL 還支援聚合計算、LINQ 查詢和資料處理。 這些先進的功能可將原始試算表資料轉換為可行的洞察力。

using IronXL;
using System;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Calculate sum of values in a range
decimal totalSales = sheet["B2:B50"].Sum();
// Use LINQ for advanced queries
decimal maxValue = sheet["C2:C50"].Max(c => c.DecimalValue);
var highValues = sheet["C2:C50"].Where(c => c.DecimalValue > 1000);
// Create instance of calculated results
Console.WriteLine($"Total: {totalSales}, Maximum: {maxValue}");
// Modify and save changes
sheet["D2"].Value = totalSales;
workbook.Save();
using IronXL;
using System;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Calculate sum of values in a range
decimal totalSales = sheet["B2:B50"].Sum();
// Use LINQ for advanced queries
decimal maxValue = sheet["C2:C50"].Max(c => c.DecimalValue);
var highValues = sheet["C2:C50"].Where(c => c.DecimalValue > 1000);
// Create instance of calculated results
Console.WriteLine($"Total: {totalSales}, Maximum: {maxValue}");
// Modify and save changes
sheet["D2"].Value = totalSales;
workbook.Save();
Imports IronXL
Imports System
Imports System.Linq

Dim workbook As WorkBook = WorkBook.Load("Financials.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Calculate sum of values in a range
Dim totalSales As Decimal = sheet("B2:B50").Sum()
' Use LINQ for advanced queries
Dim maxValue As Decimal = sheet("C2:C50").Max(Function(c) c.DecimalValue)
Dim highValues = sheet("C2:C50").Where(Function(c) c.DecimalValue > 1000)
' Create instance of calculated results
Console.WriteLine($"Total: {totalSales}, Maximum: {maxValue}")
' Modify and save changes
sheet("D2").Value = totalSales
workbook.Save()
$vbLabelText   $csharpLabel

進階閱讀作業輸出

使用 IronXL 在 C# 中讀取 Excel 檔案的最佳方法:圖像 4 - 進階讀取作業控制台輸出

LINQ 相容性開啟了強大的資料處理功能,無須手動撰寫迴圈。 您可以使用熟悉的 C# 模式來過濾、排序和匯集儲存格數值。 對於有列頭的表格,IronXL 甚至可以透過列頭名稱而非儲存格位址來引用資料。

這些功能顯示 IronXL 不只是 Excel 閱讀器,更是完整的試算表處理函式庫。 無論您是需要建立報表、驗證資料或匯出至資料庫,API 都能提供相關工具,而不會產生例外處理的惡夢或 Office 相依性問題。

摘要

以 C# 語言閱讀 Excel 檔案並不一定很複雜。 IronXL 提供現代化、無依賴性的方法,可跨 .NET Framework 和 .NET Core 專案運作。 從載入簡單的 XLSX 檔案到對儲存格資料執行複雜的 LINQ 查詢,這個函式庫都能以乾淨、可讀的代碼處理。

本文章中的範例展示了您每天都會用到的核心模式:載入工作簿、存取工作表、讀取單元值以及迭代資料。 這些模式可從簡單的腳本擴展至企業應用程式,無須修改。

準備好簡化您的 Excel 檔案處理了嗎? 購買授權以釋放 IronXL 在生產中的全部潛力,或探索 完整的 API 參考,以瞭解可用方法和屬性的其他詳細資訊。

常見問題解答

在 C# 中讀取 Excel 檔案的最佳方式是什麼?

在 C# 中讀取 Excel 檔案的最佳方法是使用 IronXL.Excel 函式庫。它可讓您在不需要在系統上安裝 Microsoft Excel 的情況下處理 Excel 檔案。

使用 IronXL 需要安裝 Microsoft Office 嗎?

不,您不需要安裝 Microsoft Office 即可使用 IronXL。它是專為 Excel 檔案處理而設計的獨立 .NET 函式庫。

IronXL 可以讀取哪些類型的 Excel 檔案?

IronXL 可以讀取各種類型的 Excel 檔案,包括 XLSX、XLS 和 CSV 格式。

IronXL 是否容易整合到 C# 專案中?

是的,IronXL 的設計可以輕鬆整合到 C# 專案中,為開發人員提供簡單的 API。

IronXL 可以解析 CSV 檔案嗎?

是的,除了 XLSX 和 XLS 檔案之外,IronXL 還能解析 CSV 檔案。

使用 IronXL.Excel 進行 Excel 檔案作業有哪些優點?

IronXL.Excel 提供直接的設定,不依賴 Microsoft Excel,並支援多種 Excel 檔案格式,可有效率地進行各種檔案作業。

使用 IronXL 是否需要複雜的設定?

不,IronXL 不需要複雜的設定,讓希望輕鬆管理 Excel 檔案的開發人員也能使用。

為何要選擇 IronXL 而非 Interop 來處理 Excel 檔案?

相較於 Interop,IronXL.Excel 較為可取,因為它簡單、不需要 Microsoft Excel,而且在處理 Excel 檔案時效能較佳。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。