C# 讀取 XLSX 檔案

This article was translated from English: Does it need improvement?
Translated
View the article in English

若要在 C# 中讀取 XLSX 檔案,請使用 IronXL 的 WorkBook.Load 方法開啟 Excel 檔案並存取工作表,藉此讀取儲存格資料、執行計算,並透過程式設計將其轉換為 DataTableDataSet 格式。

快速入門:輕鬆載入工作簿並存取工作表

透過 IronXL,您可以使用 WorkBook.Load 方法,僅需一行程式碼即可載入 XLSX 檔案。接著立即存取其第一個或指定的工作表,並開始讀取儲存格值。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 請複製並執行此程式碼片段。

    IronXl.WorkBook workbook = IronXl.WorkBook.Load("your-file.xlsx");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronXL

    arrow pointer

讀取 .XLSX 檔案 C#

  • 為您的專案取得 IronXL
  • 載入 WorkBook
  • WorkSheet
  • 應用 Sum、Min 和 Max 等函數
  • WorkSheet 作為 DataTable、DataSet 等
How To Work related to C# 讀取 XLSX 檔案

如何為我的專案取得 IronXL?

在您的專案中使用 IronXL,即可透過 C# 輕鬆處理 Excel 檔案格式。 您可以透過直接下載安裝 IronXL,或使用 Visual Studio 的 NuGet 安裝功能。 此軟體供開發用途免費使用。

Install-Package IronXL.Excel

在深入研讀 XLSX 檔案之前,請先瀏覽詳盡的 IronXL 文件,以了解所有可用功能。 IronXL 同時支援 .xls 和 .xlsx 格式,使其能靈活處理傳統與現代的 Excel 檔案。


操作教學

如何載入工作簿?

WorkBook 是 IronXL 的類別,其物件可提供對 Excel 檔案及其所有功能的完整存取權限。 例如,要存取 Excel 檔案,請使用以下程式碼:

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-load-workbook.cs
using IronXL;

// Load the workbook
WorkBook workBook = WorkBook.Load("sample.xlsx"); // Excel file path
Imports IronXL

' Load the workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx") ' Excel file path
$vbLabelText   $csharpLabel

為何採用 WorkBook.Load() 方法?

在上述程式碼中,Load() 函式將 WorkBook 載入至 WorkBook。 透過存取 Excel 檔案的特定 WorkSheet,可在 WorkBook 上執行任何類型的功能。 Load() 方法會自動偵測檔案格式,無論是 XLS、XLSX、XLSM、XLTX 或 CSV。若需處理更進階的載入情境,請參閱關於載入試算表的詳細指南。


如何存取特定工作表?

若要存取 Excel 檔案中的特定 WorkSheet,IronXL 提供了 WorkBook 類別。 其可用於多種不同情境:

有哪些不同的方式可以存取工作表?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-get-worksheet.cs
using IronXL;

// Access sheet by name
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
Imports IronXL

' Access sheet by name
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
$vbLabelText   $csharpLabel

WorkBook["SheetName"] 即是上文宣告的 WorkSheet

WorkBook

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-worksheet-index.cs
using IronXL;

// Access sheet by index
WorkSheet workSheet = workBook.WorkSheets[0];
Imports IronXL

' Access sheet by index
Dim workSheet As WorkSheet = workBook.WorkSheets(0)
$vbLabelText   $csharpLabel

WorkBook.Load()

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-default-worksheet.cs
using IronXL;

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
Imports IronXL

' Access the default worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
$vbLabelText   $csharpLabel

sample.xlsx

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-first-worksheet.cs
using IronXL;
using System.Linq;

// Access the first worksheet
WorkSheet workSheet = workBook.WorkSheets.First();
Imports IronXL
Imports System.Linq

' Access the first worksheet
Dim workSheet As WorkSheet = workBook.WorkSheets.First()
$vbLabelText   $csharpLabel

workBook

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-first-or-default-worksheet.cs
using IronXL;
using System.Linq;

// Access the first or default worksheet
WorkSheet workSheet = workBook.WorkSheets.FirstOrDefault();
Imports IronXL
Imports System.Linq

' Access the first or default worksheet
Dim workSheet As WorkSheet = workBook.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

workBook

WorkBook.Load

WorkSheet

WorkSheet

workBook

WorkBook

何時該使用哪種工作表存取方式?

每種方法都有其理想的應用情境:

  • GetWorkSheet("name"):當您知道確切的工作表名稱時
  • WorkSheets[index]:用於透過程式碼遍歷工作表
  • DefaultWorkSheet:處理單頁檔案時的快速存取
  • First()FirstOrDefault():當工作表名稱可能變更時的安全選項

取得 ExcelSheet workSheet 後,您可以從中擷取任何類型的資料,並對其執行所有 Excel 函數。 若需執行更複雜的試算表操作,請參閱《使用 C# 開啟 Excel 試算表》指南。


如何從工作表存取資料?

可透過以下流程從 ExcelSheet workSheet 存取資料:

我可以從儲存格中讀取哪些資料類型?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-get-data.cs
using IronXL;

// Accessing data as a string
string dataString = workSheet["A1"].ToString();

// Accessing data as an integer
int dataInt = workSheet["B1"].Int32Value;
Imports IronXL

' Accessing data as a string
Dim dataString As String = workSheet("A1").ToString()

' Accessing data as an integer
Dim dataInt As Integer = workSheet("B1").Int32Value
$vbLabelText   $csharpLabel

IronXL 為各種資料類型提供了多種值存取器:

  • StringValue:適用於文字資料
  • Int32Value:適用於整數
  • DoubleValue:用於小數
  • DateTimeValue:用於日期
  • BoolValue:用於表示真/假值

如何一次讀取多個儲存格?

您也可以從特定欄位的多個儲存格中取得資料:

foreach (var cell in workSheet["A2:A10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
foreach (var cell in workSheet["A2:A10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
For Each cell In workSheet("A2:A10")
	Console.WriteLine("Value is: {0}", cell.Text)
Next cell
$vbLabelText   $csharpLabel

此處顯示 A2A10 儲存格中的值。 如需更進階的範圍選取技巧,請參閱"選取範圍"教學指南

完整的實作範例應呈現何種樣貌?

上述內容的完整程式碼範例如下:

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-log-data.cs
using IronXL;
using System;

// Load an Excel file
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Specify the range
foreach (var cell in workSheet["B2:B10"])
{
    Console.WriteLine("Value is: {0}", cell.Text);
}
Imports IronXL
Imports System

' Load an Excel file
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Specify the range
For Each cell In workSheet("B2:B10")
    Console.WriteLine("Value is: {0}", cell.Text)
Next
$vbLabelText   $csharpLabel

顯示以下結果:

控制台輸出顯示已擷取的工作表資料,包含

附帶 Excel 檔案 Sample.xlsx

包含業務資料的 Excel 試算表,顯示 16 行中的

這些方法說明了在您的專案中使用 Excel 檔案資料是多麼輕鬆。 如需不使用 Interop 讀取 Excel 檔案的實用範例,請參閱讀取 Excel 範例


如何對資料執行功能?

透過以下程式碼,運用 MinMax 等彙總函數,從 Excel WorkSheet 存取已篩選的資料:

有哪些聚合函數可用?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-aggregate-function.cs
using IronXL;

// Apply aggregate functions
decimal sum = workSheet["G2:G10"].Sum(); // Sum of cells from G2 to G10
decimal min = workSheet["G2:G10"].Min(); // Minimum value in cells from G2 to G10
decimal max = workSheet["G2:G10"].Max(); // Maximum value in cells from G2 to G10
Imports IronXL

' Apply aggregate functions
Dim sum As Decimal = workSheet("G2:G10").Sum() ' Sum of cells from G2 to G10
Dim min As Decimal = workSheet("G2:G10").Min() ' Minimum value in cells from G2 to G10
Dim max As Decimal = workSheet("G2:G10").Max() ' Maximum value in cells from G2 to G10
$vbLabelText   $csharpLabel

IronXL 支援眾多數學函數,包括:

  • Average(): 計算平均值
  • Count(): 計算非空儲存格
  • CountIf():計算符合條件的儲存格
  • Median(): 找出中間值
  • StdDev():計算標準差

如何將多個功能整合在一起?

如需更多詳細資訊,請參閱我們關於《如何使用 C# 寫入 Excel 檔案》的深入教學,其中特別說明了聚合函數的相關內容。 您亦可探索 IronXL 中提供的完整數學函數清單。

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-min-max.cs
using IronXL;
using System;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Get the specified WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Calculate sum, minimum, and maximum for a range of cells
decimal sum = workSheet["G2:G10"].Sum();
decimal min = workSheet["G2:G10"].Min();
decimal max = workSheet["G2:G10"].Max();

// Output results
Console.WriteLine("Sum is: {0}", sum);
Console.WriteLine("Min is: {0}", min);
Console.WriteLine("Max is: {0}", max);
Imports IronXL
Imports System

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Get the specified WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Calculate sum, minimum, and maximum for a range of cells
Dim sum As Decimal = workSheet("G2:G10").Sum()
Dim min As Decimal = workSheet("G2:G10").Min()
Dim max As Decimal = workSheet("G2:G10").Max()

' Output results
Console.WriteLine("Sum is: {0}", sum)
Console.WriteLine("Min is: {0}", min)
Console.WriteLine("Max is: {0}", max)
$vbLabelText   $csharpLabel

此程式碼會顯示以下輸出:

顯示資料分析結果的終端機畫面:Sum=482, Min=12, Max=350(黑色背景)

而 Excel 檔案 Sample.xlsx 的內容如下:

包含銷售資料的 Excel 試算表,顯示分段、國家、產品、銷售數量及價格等資訊,橫跨多行

如何將 Excel 工作表讀取為 DataTable?

Using IronXL,可輕鬆將 Excel WorkSheet 作為 DataTable 來使用。 此功能在您需要將 Excel 資料與現有的資料處理流程整合,或將資料綁定至 UI 控制項時,特別實用。

基本轉換方法為何?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-datatable.cs
using IronXL;
using System.Data;

// Convert worksheet to DataTable
DataTable dt = workSheet.ToDataTable();
Imports IronXL
Imports System.Data

' Convert worksheet to DataTable
Dim dt As DataTable = workSheet.ToDataTable()
$vbLabelText   $csharpLabel

如何將第一行用作欄位標題?

將第一行的 ExcelSheet 替換為 DataTable ColumnName

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-datatable-header.cs
using IronXL;
using System.Data;

// Convert worksheet to DataTable with the first row as column names
DataTable dt = workSheet.ToDataTable(true);
Imports IronXL
Imports System.Data

' Convert worksheet to DataTable with the first row as column names
Dim dt As DataTable = workSheet.ToDataTable(True)
$vbLabelText   $csharpLabel

ToDataTable() 的布林參數會將第一行設定為 DataTable 的欄位名稱。 預設值為 False。 這在處理包含標題的結構化資料時特別有用。

如何遍歷 DataTable?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-print-datatable.cs
using IronXL;
using System;
using System.Data;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Get the specified WorkSheet
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Convert WorkSheet to DataTable
DataTable dt = workSheet.ToDataTable(true); // Use first row as column names

// Iterate through rows and columns and display data
foreach (DataRow row in dt.Rows) // Access rows
{
    for (int i = 0; i < dt.Columns.Count; i++) // Access columns of corresponding row
    {
        Console.Write(row[i] + " ");
    }
    Console.WriteLine();
}
Imports IronXL
Imports System
Imports System.Data

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Get the specified WorkSheet
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Convert WorkSheet to DataTable
Dim dt As DataTable = workSheet.ToDataTable(True) ' Use first row as column names

' Iterate through rows and columns and display data
For Each row As DataRow In dt.Rows ' Access rows
    For i As Integer = 0 To dt.Columns.Count - 1 ' Access columns of corresponding row
        Console.Write(row(i) & " ")
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

使用上述程式碼,即可存取 WorkSheet 的每個儲存格值,並依需求加以運用。 如需執行更進階的 DataTable 操作,請參閱有關以 DataSet 格式匯入與匯出的指南。


如何將 Excel 檔案讀取為 DataSet?

IronXL 提供一個簡單函式,可將完整的 Excel 檔案 (WorkBook) 作為 DataSet 使用。 請使用 ToDataSet 方法將整個工作簿轉換為 DataSet
在此範例中,我們將說明如何將 Excel 檔案用作 DataSet

如何將工作簿轉換為 DataSet?

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-file-excel-to-dataset.cs
using IronXL;
using System;
using System.Data;

// Load the Excel workbook
WorkBook workBook = WorkBook.Load("sample.xlsx");

// Convert the WorkBook to a DataSet
DataSet ds = workBook.ToDataSet();

// Iterate through tables in the DataSet and display table names
foreach (DataTable dt in ds.Tables)
{
    Console.WriteLine(dt.TableName);
}
Imports IronXL
Imports System
Imports System.Data

' Load the Excel workbook
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

' Convert the WorkBook to a DataSet
Dim ds As DataSet = workBook.ToDataSet()

' Iterate through tables in the DataSet and display table names
For Each dt As DataTable In ds.Tables
    Console.WriteLine(dt.TableName)
Next
$vbLabelText   $csharpLabel

上述程式碼的輸出結果如下:

損毀或不完整的螢幕截圖,僅顯示

而 Excel 檔案 Sample.xlsx 的內容如下:

(center content omitted for brevity)

如何存取所有工作表中各儲存格的值?

在上述範例中,我們可以輕鬆地將 Excel 檔案解析為 DataSet,並將 Excel 檔案中的每個 DataTable 視為 DataTable 來處理。 點此深入了解如何將 Excel 解析為 DataSet,內含程式碼範例。

讓我們再來看一個範例,說明如何存取所有 ExcelSheets 的每個儲存格值。 在此,我們可以存取 Excel 檔案中每個 ExcelSheet 的每個儲存格值。

:path=/static-assets/excel/content-code-examples/how-to/c-sharp-read-xlsx-all-excel-sheets.cs
// 此程式碼片段無法顯示!
' 此程式碼片段無法顯示!
$vbLabelText   $csharpLabel

以上述範例為例,此方法便於存取 Excel 檔案中每個 ExcelSheet 的儲存格值。當處理資料分散於不同工作表的多工作簿時,此方法特別實用。

如需進一步了解如何在不使用 Interop 的情況下讀取 Excel 檔案,請參閱此處的程式碼。 API 參考文件在 IronXL API 參考中提供了所有可用方法與屬性的完整詳細資訊。


教學快速連結

IronXL API 參考指南

請參閱文件以進一步了解 IronXL 的功能、類別、方法、欄位、命名空間及枚舉。

IronXL API 參考指南
Documentation related to 教學快速連結

WorkSheet

WorkSheet

WorkSheet

常見問題

如何在 C# 中讀取 XLSX 檔案?

若要在 C# 中讀取 XLSX 檔案,請使用 IronXL 的 WorkBook.Load 方法。只需透過 IronXl.WorkBook.Load("your-file.xlsx") 載入 Excel 檔案,即可存取工作表以讀取儲存格資料、執行計算,並透過程式設計將其轉換為 DataTable 或 DataSet 格式。

載入 Excel 檔案時支援哪些檔案格式?

IronXL 支援多種 Excel 檔案格式,包括 .xls、.xlsx、.xlsm、.xltx 及 .csv 檔案。WorkBook.Load 方法會自動偵測檔案格式,使其能靈活處理傳統與現代的 Excel 檔案。

我該如何為我的 C# 專案安裝 Excel 讀取函式庫?

您可以透過直接下載或透過 Visual Studio 的 NuGet 安裝來安裝 IronXL。此軟體供開發用途免費使用,並提供一種在 C# 中處理 Excel 檔案格式的簡易方式。

有哪些不同的方式可以存取特定的工作表?

IronXL 提供多種存取工作表的方式:您可以使用 workBook.GetWorkSheet("SheetName") 透過名稱存取、workBook.WorkSheets[0] 透過索引存取,或 workbook.WorkSheets.First() 取得第一個工作表。

載入 Excel 資料後,我可以對其進行計算嗎?

是的,在 IronXL 中載入 XLSX 檔案後,您可以對資料套用 Sum、Min 和 Max 等各種函數。IronXL程式庫透過 WorkBook 物件提供對 Excel 檔案功能的完整存取權限。

是否可以將 Excel 工作表資料轉換為其他格式?

是的,IronXL 允許您讀取工作表並將其轉換為各種格式,包括 DataTables、DataSet 等。這使得將 Excel 資料整合到您的 C# 應用程式中變得輕而易舉。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 2,052,917 | 版本: 2026.6 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronXL.Excel
執行範例 觀看您的資料變成試算表。