如何在 C# 中匯入 Excel 文件

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

作為開發人員,我們經常需要從 Excel 文件導入數據,並利用這些數據來滿足我們的應用程式和數據管理需求。 IronXL 無需編寫大量程式碼,即可輕鬆將我們需要的資料直接匯入 C# 項目,然後以程式設計方式對其進行操作。

快速入門:立即載入您的 Excel 檔案

只需使用 IronXL 的無超時 API 進行一次方法調用,即可在幾秒鐘內加載任何受支援的 Excel 工作表(XLSX、CSV 等)——無需互操作,輕鬆便捷。 立即開始與工作簿進行交互,根據需要存取儲存格、區域或工作表。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronXL

    PM > Install-Package IronXL.Excel

  2. 複製並運行這段程式碼。

    WorkBook wb = IronXL.WorkBook.Load("path/to/data.xlsx");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronXL,免費試用!
    arrow pointer

導入 Excel 資料 C#

  • 使用 IronXL 庫導入數據
  • 在 C# 中導入 Excel 數據
  • 導入特定單元格區域的數據
  • 匯入包含聚合函數(例如 SUM、AVG、MIN、MAX 等)的 Excel 數據
How To Work related to 如何在 C# 中匯入 Excel 文件

步驟 1

1. 使用 IronXL 庫導入數據

本教學將使用 IronXL Excel 庫提供的函數匯入資料。 該軟體可免費用於開發。

透過 DLL 下載或使用 NuGet 套件導航將其安裝到您的C# 專案中。

Install-Package IronXL.Excel

操作指南

2. 專案訪問工作表

為了滿足我們今天的專案需求,我們將使用在步驟 1 中安裝的 IronXL 軟體,將 Excel 資料匯入到我們的 C# 應用程式中。

在步驟 2 中,我們將使用 IronXL 的WorkBook.Load()函數將 Excel 工作簿載入到我們的 C# 專案中。 在這個函數中,我們將 Excel 工作簿的路徑作為字串參數傳遞,如下所示:

// Load Excel file
WorkBook wb = WorkBook.Load("Path");
// Load Excel file
WorkBook wb = WorkBook.Load("Path");
' Load Excel file
Dim wb As WorkBook = WorkBook.Load("Path")
$vbLabelText   $csharpLabel

指定路徑下的 Excel 檔案將被載入到wb中。

接下來,我們需要存取 Excel 文件中的特定工作表,該文件中的資料將匯入專案中。 為此,我們可以使用 IronXL 的GetWorkSheet()函數,將工作表名稱作為字串參數傳遞,以指定要匯入 WorkBook 中的哪個工作表。

// Specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
// Specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
' Specify sheet name of Excel WorkBook
Dim ws As WorkSheet = wb.GetWorkSheet("SheetName")
$vbLabelText   $csharpLabel

工作表將以ws形式匯入,而wb是我們在上面的程式碼範例中定義的工作簿。

還有以下幾種將 Excel 工作表匯入到專案中的替代方法。

// Import WorkSheet by various methods

// by sheet indexing
WorkSheet mySheet = wb.WorkSheets[SheetIndex];

// get default WorkSheet
WorkSheet defaultSheet = wb.DefaultWorkSheet;

// get first WorkSheet
WorkSheet firstSheet = wb.WorkSheets.First();

// for the first or default sheet
WorkSheet firstOrDefaultSheet = wb.WorkSheets.FirstOrDefault();
// Import WorkSheet by various methods

// by sheet indexing
WorkSheet mySheet = wb.WorkSheets[SheetIndex];

// get default WorkSheet
WorkSheet defaultSheet = wb.DefaultWorkSheet;

// get first WorkSheet
WorkSheet firstSheet = wb.WorkSheets.First();

// for the first or default sheet
WorkSheet firstOrDefaultSheet = wb.WorkSheets.FirstOrDefault();
' Import WorkSheet by various methods

' by sheet indexing
Dim mySheet As WorkSheet = wb.WorkSheets(SheetIndex)

' get default WorkSheet
Dim defaultSheet As WorkSheet = wb.DefaultWorkSheet

' get first WorkSheet
Dim firstSheet As WorkSheet = wb.WorkSheets.First()

' for the first or default sheet
Dim firstOrDefaultSheet As WorkSheet = wb.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

現在,我們可以輕鬆地從指定的 Excel 文件中匯入任何類型的資料。 讓我們來看看在專案中匯入 Excel 文件資料的所有可能方法。


3. 在 C# 中導入 Excel 數據

這是將Excel檔案資料匯入我們專案的基本步驟。

為此,我們可以使用單元尋址系統來指定我們需要匯入哪些單元資料。 它將傳回Excel檔案中特定單元格位址的值。

var cellValue = ws["Cell Address"];
var cellValue = ws["Cell Address"];
Dim cellValue = ws("Cell Address")
$vbLabelText   $csharpLabel

我們也可以使用行索引和列索引從 Excel 檔案匯入儲存格資料。 這行程式碼將傳回指定行和列索引的值。

var cellValueByIndex = ws.Rows[RowIndex].Columns[ColumnIndex];
var cellValueByIndex = ws.Rows[RowIndex].Columns[ColumnIndex];
Dim cellValueByIndex = ws.Rows(RowIndex).Columns(ColumnIndex)
$vbLabelText   $csharpLabel

如果我們想要將導入的單元格值賦給變量,可以使用以下程式碼。

// Import Data by Cell Address
// by cell addressing
string val = ws["Cell Address"].ToString();

// by row and column indexing
string valWithIndexing = ws.Rows[RowIndex].Columns[ColumnIndex].Value.ToString();
// Import Data by Cell Address
// by cell addressing
string val = ws["Cell Address"].ToString();

// by row and column indexing
string valWithIndexing = ws.Rows[RowIndex].Columns[ColumnIndex].Value.ToString();
' Import Data by Cell Address
' by cell addressing
Dim val As String = ws("Cell Address").ToString()

' by row and column indexing
Dim valWithIndexing As String = ws.Rows(RowIndex).Columns(ColumnIndex).Value.ToString()
$vbLabelText   $csharpLabel

在上述範例中,行索引和列索引均從 0 開始。


4. 匯入特定範圍的 Excel 數據

如果您想要從 Excel 工作簿中匯入特定範圍內的數據,可以使用range函數輕鬆完成。 為了定義範圍,我們需要描述起始儲存格位址和結束儲存格位址。 這樣,它將傳回指定範圍內的所有儲存格值。

var rangeData = ws["Starting Cell Address:Ending Cell Address"];
var rangeData = ws["Starting Cell Address:Ending Cell Address"];
Dim rangeData = ws("Starting Cell Address:Ending Cell Address")
$vbLabelText   $csharpLabel

有關在 Excel 文件中處理範圍的更多信息,請查看提供的程式碼範例。

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-import.cs
using IronXL;
using System;

// Import Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");

// Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import data of specific cell
string val = ws["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}", val);

Console.WriteLine("import Values in Range From B3 To B9 :\n");

// Import data in specific range
foreach (var item in ws["B3:B9"])
{
    Console.WriteLine(item.Value.ToString());
}

Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

上述程式碼顯示以下輸出:

1output related to 4. 匯入特定範圍的 Excel 數據

Excel 檔案sample.xlsx中的值如下:

1excel related to 4. 匯入特定範圍的 Excel 數據

5. 透過聚合函數導入Excel數據

我們也可以將聚合函數套用到 Excel 文件,並匯入這些聚合函數產生的結果資料。 以下是一些不同功能及其使用方法的範例。

  • Sum()

    // To find the sum of a specific cell range
    var sum = ws["Starting Cell Address:Ending Cell Address"].Sum();
    // To find the sum of a specific cell range
    var sum = ws["Starting Cell Address:Ending Cell Address"].Sum();
    ' To find the sum of a specific cell range
    Dim sum = ws("Starting Cell Address:Ending Cell Address").Sum()
    $vbLabelText   $csharpLabel
  • Average()

    // To find the average of a specific cell range
    var average = ws["Starting Cell Address:Ending Cell Address"].Avg();
    // To find the average of a specific cell range
    var average = ws["Starting Cell Address:Ending Cell Address"].Avg();
    ' To find the average of a specific cell range
    Dim average = ws("Starting Cell Address:Ending Cell Address").Avg()
    $vbLabelText   $csharpLabel
  • Min()

    // To find the minimum in a specific cell range
    var minimum = ws["Starting Cell Address:Ending Cell Address"].Min();
    // To find the minimum in a specific cell range
    var minimum = ws["Starting Cell Address:Ending Cell Address"].Min();
    ' To find the minimum in a specific cell range
    Dim minimum = ws("Starting Cell Address:Ending Cell Address").Min()
    $vbLabelText   $csharpLabel
  • Max()

    // To find the maximum in a specific cell range
    var maximum = ws["Starting Cell Address:Ending Cell Address"].Max();
    // To find the maximum in a specific cell range
    var maximum = ws["Starting Cell Address:Ending Cell Address"].Max();
    ' To find the maximum in a specific cell range
    Dim maximum = ws("Starting Cell Address:Ending Cell Address").Max()
    $vbLabelText   $csharpLabel

您可以閱讀更多關於在 Excel for C# 中使用聚合函數的內容,並了解更多關於使用不同方法提取資料的內容。

讓我們來看一個應用這些函數匯入 Excel 檔案資料的範例。

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-math-functions.cs
using IronXL;
using System;

// Import Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");

// Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import Excel file data by applying aggregate functions
decimal sum = ws["D2:D9"].Sum();
decimal avg = ws["D2:D9"].Avg();
decimal min = ws["D2:D9"].Min();
decimal max = ws["D2:D9"].Max();

Console.WriteLine("Sum From D2 To D9: {0}", sum);
Console.WriteLine("Avg From D2 To D9: {0}", avg);
Console.WriteLine("Min From D2 To D9: {0}", min);
Console.WriteLine("Max From D2 To D9: {0}", max);

Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

上述程式碼輸出如下:

2output related to 5. 透過聚合函數導入Excel數據

我們的檔案sample.xlsx將包含以下值:

2excel related to 5. 透過聚合函數導入Excel數據

6. 匯入完整的Excel檔案數據

如果我們想要將完整的 Excel 檔案資料匯入到我們的 C# 專案中,我們可以先將載入的工作簿解析為資料集。 這樣,完整的 Excel 資料將被匯入到資料集中,Excel 檔案中的工作表將成為該資料集中的資料表。 以下是實際應用範例:

// Import WorkBook into DataSet
DataSet ds = wb.ToDataSet();
// Import WorkBook into DataSet
DataSet ds = wb.ToDataSet();
' Import WorkBook into DataSet
Dim ds As DataSet = wb.ToDataSet()
$vbLabelText   $csharpLabel

這樣,我們指定的工作表將被匯入到資料集中,我們可以根據需要使用該資料集。

通常,Excel 檔案的第一列用作ColumnName 。 在這種情況下,我們需要將第一列設為 DataTable ColumnName 。 為此,我們將 IronXL 的ToDataSet()函數的布林參數設定如下:

// Import WorkBook into DataSet with first row as ColumnNames
DataSet ds = wb.ToDataSet(true);
// Import WorkBook into DataSet with first row as ColumnNames
DataSet ds = wb.ToDataSet(true);
' Import WorkBook into DataSet with first row as ColumnNames
Dim ds As DataSet = wb.ToDataSet(True)
$vbLabelText   $csharpLabel

這將把 Excel 檔案的第一列設定為 DataTable ColumnName

讓我們來看一個完整的範例,了解如何將 Excel 資料匯入到資料集中,並將 Excel 工作表的第一列用作資料表ColumnName

:path=/static-assets/excel/content-code-examples/how-to/csharp-import-excel-dataset.cs
using IronXL;
using System;
using System.Data;

WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");

// Import Excel data into a DataSet
DataSet ds = wb.ToDataSet(true);

Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用 Excel 資料集和資料表函數可能比較複雜,但我們提供了更多範例,說明如何將檔案資料整合到您的 C# 專案中。


圖書館快速訪問

查閱 IronXL 參考資料

在我們的 IronXL 完整文件 API 參考中,以了解更多關於透過儲存格、區域、資料集和資料表提取 Excel 資料的資訊。

查閱 IronXL 參考資料
Documentation related to 圖書館快速訪問

常見問題解答

如何在C#中匯入Excel文件而不使用Interop?

您可以使用IronXL在C#中匯入Excel文件而不使用Interop。只需使用WorkBook.Load()方法加載您的文件,並通過GetWorkSheet()等各種功能訪問數據。

如何在C#項目中安裝IronXL庫?

通過在包管理器控制台中執行命令Install-Package IronXL.Excel,或直接從IronXL網站下載DLL來安裝IronXL。

IronXL中有哪些方法可用於訪問特定工作表?

您可以使用GetWorkSheet()方法在IronXL中通過提供工作表名稱作為參數來訪問特定的工作表。

如何在C#中從特定的單元格範圍導入數據?

使用IronXL,您可以通過在範圍函數中定義開始和結束單元格地址來從特定的單元格範圍導入數據,從而允許精確的數據操作。

使用IronXL處理Excel數據管理有什麼好處?

IronXL在Excel數據管理中提供了靈活性,具有通過單元格、範圍和聚合函數等導入數據的功能。它簡化了操作,無需Interop,並提供了一個強大的API以進行高級數據處理。

在匯入Excel數據時如何使用聚合函數?

您可以使用IronXL在匯入Excel文件的同時執行Sum、Average、Min、Max等聚合函數,增強數據分析能力。

是否可以將Excel工作表轉換為C#中的DataTables?

是的,您可以通過使用IronXL加載工作簿和利用ToDataSet()方法將Excel工作表轉換為C#中的DataTables,這有助於廣泛的數據管理。

我可以在C#中使用Excel表的第一行作為列標題嗎?

IronXL允許您通過將ToDataSet()函數的布爾參數設置為true來使用Excel表的第一行作為列標題,將數據轉換為結構化DataTable。

在哪裡可以找到關於使用IronXL進行Excel操作的更多信息?

有關使用IronXL進行Excel操作的更多詳細信息,請探索IronXL提供的全面API參考,該參考提供了數據操作技術和高級功能的見解。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 1,738,553 | Version: 2025.11 剛發表