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 格式。

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

using IronXL,您可以在一行中使用 WorkBook.Load 方法載入 XLSX 檔案。然後立即存取其第一個或命名的工作表並開始讀取儲存格數值。

  1. 使用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.Excel 在您的專案中使用 IronXL 可以簡單地處理 C# 中的 Excel 檔案格式。 您可以通過直接下載安裝 IronXL,或者選擇使用 NuGet 安裝到 Visual Studio。 本軟體可免費用於開發。

Install-Package IronXL.Excel

在深入了解讀取 XLSX 檔案之前,探索全面的 IronXL 文件以了解所有可用功能。 IronXL 支援 .xls 和 .xlsx 格式,使其適用於傳統和現代 Excel 檔案。


教程

如何載入 WorkBook?

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 檔案的特定 WorkSheetWorkBook 上執行任何型別的函式。Load() 方法會自動檢測檔案格式,無論是 XLS、XLSX、XLSM、XLTX 還是 CSV。欲了解更高級的載入情境,請參閱載入電子表格的詳細指南


如何存取特定的 WorkSheet?

要存取 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 工作表的指南


如何存取 WorkSheet 的資料?

資料可以通過此過程從 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

這將顯示從 A2 儲存格到 A10 儲存格的值。 要了解更高級的範圍選擇技巧,請參閱選擇範圍教程

完整的實現看起來如何?

這裡提供了上述細節的完整程式碼範例:

: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

它顯示了以下結果:

主控台輸出顯示提取的工作表資料,包括政府、私人、中型市場和渠道合作夥伴值

using Excel 檔案 Sample.xlsx

具有業務資料的 Excel 電子表格,顯示跨 16 行的區段、國家、產品和折扣帶欄。

這些方法呈現瞭如何輕鬆地在您的專案中使用 Excel 檔案資料。 如需閱讀不使用 Interop 的 Excel 檔案的實例,請參閱閱讀 Excel 範例


如何對資料執行函式?

通過使用如下程式碼對 Excel WorkSheet 套用聚合函式如 MinMax,來存取過濾的資料:

可用的聚合函式有哪些?

: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

此程式碼顯示以下輸出:

終端顯示資料分析結果:黑色背景上的總和=482,最小值=12,最大值=350

這就是 Excel 檔案 Sample.xlsx 的樣子:

具有銷售資料的 Excel 電子表格,顯示多行的區段、國家、產品、銷售單位和定價

如何將 Excel WorkSheet 讀取為 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

上述程式碼的輸出如下所示:

顯示僅有 Sheet1、Sheet2 和 Sheet3 標籤的損壞或不完整的截圖

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
using IronXL;
using System;

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

// Iterate through every WorkSheet in the WorkBook
foreach (WorkSheet workSheet in workBook.WorkSheets)
{
    Console.WriteLine($"Worksheet: {workSheet.Name}");

    // Access each filled cell value on the current WorkSheet
    foreach (var cell in workSheet.FilledCells)
    {
        Console.WriteLine($"{cell.Address}: {cell.Text}");
    }
}
Imports IronXL
Imports System

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

' Iterate through every WorkSheet in the WorkBook
For Each workSheet As WorkSheet In workBook.WorkSheets
    Console.WriteLine($"Worksheet: {workSheet.Name}")

    ' Access each filled cell value on the current WorkSheet
    For Each cell In workSheet.FilledCells
        Console.WriteLine($"{cell.Address}: {cell.Text}")
    Next
Next
$vbLabelText   $csharpLabel

使用上述範例,方便地存取 Excel 檔案每個 ExcelSheet 的每個儲存格值。這種方法特別適合處理帶有多張工作表的工作簿,其中資料分佈在不同的標籤中。

要了解如何在不使用 Interop 的情況下讀取 Excel 檔案的更多資訊,請參閱此處的程式碼。 API 參考文件提供有關所有可用方法和屬性的詳細資訊,請參閱IronXL API Reference


快速存取教程

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 Install 安裝 IronXL。該軟體免費提供開發用途,並提供一種簡單的方法在 C# 中操作 Excel 檔案格式。

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

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

載入 Excel 資料後是否可以進行計算?

是的,使用 IronXL 載入 XLSX 檔案後,您可以在資料上應用各種函式如 Sum、Min 和 Max。該程式庫通過 WorkBook 物件提供對 Excel 檔案功能的完整存取。

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

是的,IronXL 允許您讀取 WorkSheet 並將其轉換為各種格式,包括 DataTable、DataSet 等。這使您能輕鬆地將 Excel 資料整合到您的 C# 應用程式中。

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

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