How to Import Excel Files in C#

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等)——無需Interop,非常方便。 立即開始與工作簿名互動,按需訪問單元格、範圍或工作表。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronXL with NuGet Package Manager

    PM > Install-Package IronXL.Excel

  2. Copy and run this code snippet.

    WorkBook wb = IronXL.WorkBook.Load("path/to/data.xlsx");
  3. Deploy to test on your live environment

    Start using IronXL in your project today with a free trial
    arrow pointer
class="learnn-how-section">
class="row">
class="col-sm-6">

導入Excel數據C#

  • 使用IronXL Library導入數據
  • 在C#中導入Excel數據
  • 導入特定單元格範圍的數據
  • 使用聚合函數SUM,AVG,MIN,MAX等導入Excel數據
class="col-sm-6">
class="download-card"> How To Work related to How to Import Excel Files in C#

class="hsg-featured-snippet">

最小工作流程(5步)

  1. 下載並安裝C#庫以導入Excel檔案
  2. 準備要導入的Excel檔案
  3. 使用Load方法導入試算表
  4. 使用直觀的API編輯加載的Excel檔案
  5. 以各種格式導出編輯過的Excel檔案

class="tutorial-segment-title">步驟 1

1. 使用IronXL Library導入數據

使用IronXL Excel庫提供的功能來導入數據,這是我們在本教程中將使用的。 該軟體免費提供進行開發。

Install into your C# Project via DLL Download or navigate using the NuGet package.

Install-Package IronXL.Excel

class="tutorial-segment-title">如何教程

2. 訪問專案的WorkSheet

為了滿足我們今天的專案需求,我們將使用在步驟1中安裝的IronXL軟件將Excel數據導入到我們的C#應用中。

在步驟2中,我們將使用IronXL的WorkBook.Load()函數在我們的CSharp專案中加載我們的Excel WorkBook。 在此函數中,我們將Excel WorkBook的路徑作為字串參數傳遞,如下所示:

// 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()函數,將工作簿的工作表名稱作為字串參數傳遞,以指定要導入的工作簿中的哪個工作表。

// 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 WorkBook中導入特定範圍的數據,可以使用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

上述代碼顯示了以下輸出:

class="center-image-wrapper"> 1output related to 4. 導入特定範圍的Excel數據

Excel檔案sample.xlsx的值為:

class="center-image-wrapper"> 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

您可以閱讀更多有關在C#中使用Excel的聚合函數,並了解有關以不同方式提取數據的更多信息。

讓我們看看一個應用這些函數來導入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

上面的代碼給出了這個輸出:

class="center-image-wrapper"> 2output related to 5. 通過聚合函數導入Excel數據

而我們的檔案sample.xlsx將有以下值:

class="center-image-wrapper"> 2excel related to 5. 通過聚合函數導入Excel數據

6. 將完整的Excel數據導入

如果我們想要將整個Excel檔案數據導入到C#項目中,我們可以先將加載的WorkBook解析為DataSet。 這樣,整個Excel數據將被導入到DataSet中,而Excel文件上的工作表將成為該DataSet中的DataTable。 這裡是其運行方式:

// 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

這樣,我們指定的工作表將被導入到一個DataSet中,我們可以根據我們的要求使用。

通常,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數據導入到DataSet中並將Excel工作表的第一列作為DataTable的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 DataSet和DataTable函數可能會很複雜,但我們有更多可供使用您C#項目的文件數據的示例。


class="tutorial-segment-title">庫快速訪問

class="tutorial-section">
class="row">
class="col-sm-8">

探索IronXL參考

了解更多有關通過單元格、範圍、數據集和數據表提取Excel數據的信息,請參閱我們的完整文檔API參考中對IronXl的內容。

探索IronXL參考
class="col-sm-4">
class="tutorial-image"> Documentation related to class=庫快速訪問" class="img-responsive add-shadow img-responsive img-popup" src="/img/svgs/documentation.svg" loading="lazy">

常見問題解答

如何在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,686,155 | 版本: 2025.11 剛剛發布