跳過到頁腳內容
使用 IRONXL

如何在 C# 中導入 Excel 文件

使用 IronXL程式庫(一款無需安裝 Microsoft Excel 即可讀取 XLS、XLSX 和 CSV 檔案的 .NET 函式庫)在 C# 中匯入 Excel 檔案。 只需使用 WorkBook.Load("file.xlsx") 即可開啟檔案並存取儲存格數據,語法直觀,如 sheet["A1"]

Microsoft Excel 是一款多功能試算表軟體,有助於資料的整理、呈現與分析。 然而,在 C# 中透過程式化方式操作 Excel 可能頗具挑戰性,特別是在處理不同類型的試算表檔案,或部署伺服器上未安裝 Microsoft Office 時。 IronXL程式庫提供了一套完整的解決方案,可在 C# 應用程式中匯入並讀取 Excel 檔案,支援多種格式,包括 XLSX、XLS 和 CSV 檔案

什麼是 IronXL,為什麼我應該使用它來匯入 Excel 檔案?

IronXL 是一款 .NET Excel 程式庫,其設計重點在於易用性、精準度與速度。 它能協助您匯入並讀取 Excel 文件,並以極速效能高效地建立及編輯 Excel 檔案。 與需要 Microsoft Office Interop 的傳統方法不同,IronXL 能夠獨立運作,無需依賴 MS Office Interop。 這意味著您將獲得所有功能,無需安裝 Excel 即可讀取 Excel 檔案。 這使得 IronXL 成為開發者於 C# 應用程式中匯入並讀取 Excel 檔案的強大工具,無論您正在建置 ASP.NET 網頁應用程式、桌面應用程式,還是雲端解決方案。

IronXL 支援所有平台,包括 Windows、LinuxmacOSDockerAzureAWS。 本產品相容於所有 .NET Framework 版本,並支援現代化的 .NET Core 及 .NET 5+ 環境。 IronXL 程式庫是一款多功能程式庫,可整合至主控台、桌面及 Web ASP.NET 應用程式,以及 Blazor 應用程式中。 它支援多種工作簿格式,例如 XLS 和 XLSX 檔案、XSLT 和 XLSM、CSV 以及 TSV,使其成為需要在電子表格檔案類型之間進行轉換的理想選擇。

哪些關鍵功能讓 IronXL 成為 Excel 匯入的必備工具?

如何在 C# 中匯入 Excel 工作簿?

開始 Excel 匯入前需要準備什麼?

若要在 C# 中使用 IronXL 讀取 Excel 檔案,請確保您的電腦已安裝以下元件:

  1. Visual Studio - 這是用於開發 C# .NET 應用程式的官方整合開發環境 (IDE)。 Visual Studio 提供了出色的 IntelliSense 支援和偵錯工具,讓處理 Excel 檔案更加容易。 您可以從微軟網站下載並安裝 Visual Studio。 社群版(Community Edition)完全免費,且足以滿足大多數開發需求。

  2. IronXL程式庫 - 這是協助您在 C# 中處理指定路徑下 Excel 試算表的程式庫。 使用前必須先將其安裝至您的 C# 程式中。 IronXL 可從 NuGet 網站輕鬆下載,或透過 Visual Studio 工具中的"管理 NuGet 套件"介面直接安裝。 若您偏好手動安裝,亦可直接下載 .NET Excel DLL 檔案。

若要進行生產環境部署,您需要套用授權金鑰以移除浮水印並啟用完整功能。 開發與測試可使用試用版進行。

我應該在程式碼中加入哪些命名空間?

安裝 Visual Studio 和 IronXL 後,請在原始碼中引用 IronXL 組件以使用 IronXL。 在新專案中,將要使用 IronXL 函數的檔案頂部新增以下程式碼行:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

透過此單一命名空間匯入,即可存取執行 Excel 操作所需的所有核心功能。 若您正在使用 Excel 的特定功能(例如圖表條件格式),可能需要從 IronXL程式庫導入額外的命名空間。

如何載入並開啟 Excel 檔案?

微軟Excel電子表格也稱為Excel工作簿。 每個工作簿包含多個工作表(亦稱為工作頁),而單一工作表則包含以列與行排列的表格儲存格,並各自儲存對應的數值。 要開啟和讀取 Excel 文件,請使用 IronXL 庫中的WorkBook類別和Load方法載入它。 代碼如下:

// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");

// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
    WorkBook streamWorkbook = WorkBook.Load(stream);
}

// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");
' Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")

' You can also load from a stream
Using stream = File.OpenRead("test.xlsx")
    Dim streamWorkbook As WorkBook = WorkBook.Load(stream)
End Using

' Or load CSV files with custom delimiters
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("data.csv", delimiter:=",")
$vbLabelText   $csharpLabel

這將開啟工作簿實例引用變數中的 Excel 檔案。 由於工作簿可能包含多個工作表,您可以透過多種方式存取它們。 以下程式碼開啟工作表實例變數中的第一個工作表:

// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();

// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");

// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];
' Get the first worksheet
Dim sheet As WorkSheet = workbook.WorkSheets.First()

' Or access by worksheet name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("Sheet1")

' Or by index (zero-based)
Dim indexedSheet As WorkSheet = workbook.WorkSheets(0)
$vbLabelText   $csharpLabel

這將開啟 Excel 檔案中的第一個工作表,現在可以從該工作表中讀取和寫入 Excel 資料。 在更進階的應用情境中,您可能需要管理多個工作表,或透過程式設計建立新的試算表

開啟 Excel 文件

Excel電子表格,顯示員工數據,包含姓名、職稱和薪資三列,共包含5筆員工記錄,涵蓋不同的職位和薪資。 包含員工資訊的範例 Excel 檔案,將透過 C# 進行匯入。 資料包含姓名、職稱(經理、總監、員工、總裁)及對應的薪資數值。

匯入後如何讀取特定儲存格的數值?

匯入 Excel 檔案後,即可開始讀取資料。 使用 IronXL 在 C# 中讀取 Excel 檔案資料非常簡單且容易。 您只需使用標準 Excel 標記法(例如"A1"、"B2"等)提及儲存格參考編號,即可讀取 Excel 儲存格的值。 該函式庫提供多種方式來存取儲存格值,具體取決於預期的資料類型。

以下程式碼會擷取引用編號為"C2"的儲存格的值:

// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;

// Display the value
Console.WriteLine(cellValue);

// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;

// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;
' Select cells easily in Excel-notation and return the value
Dim cellValue As Integer = sheet("C2").IntValue

' Display the value
Console.WriteLine(cellValue)

' You can also access different data types
Dim textValue As String = sheet("A2").StringValue
Dim decimalValue As Decimal = sheet("C2").DecimalValue
Dim doubleValue As Double = sheet("C2").DoubleValue
Dim dateValue As DateTime = sheet("D2").DateTimeValue
Dim boolValue As Boolean = sheet("E2").BoolValue

' Check if cell is empty
Dim isEmpty As Boolean = sheet("F2").IsEmpty
$vbLabelText   $csharpLabel

輸出內容如下:

! Microsoft Visual Studio 偵錯控制台視窗顯示 Excel 檔案讀取操作的輸出,包括檔案路徑和完成訊息。 在 C# 中成功讀取 Excel 檔案後的除錯主控台輸出。 程式已執行完畢,正在等待使用者輸入以關閉程式。

現在,讓我們從已開啟的 Excel 檔案中讀取一組儲存格的資料。IronXL 讓您能使用熟悉的 Excel 語法輕鬆處理儲存格範圍。 代碼如下:

// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}

// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
    Console.WriteLine($"Row cell value: {cell.Value}");
}

// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
    Console.WriteLine($"Column A value: {cell.Value}");
}
' Read from a range of cells elegantly.
For Each cell In sheet("A2:A6")
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next

' You can also work with entire rows or columns
Dim row = sheet.GetRow(2) ' Get row 3 (0-indexed)
For Each cell In row
    Console.WriteLine($"Row cell value: {cell.Value}")
Next

' Or get a column
Dim column = sheet.GetColumn(0) ' Get column A
For Each cell In column
    Console.WriteLine($"Column A value: {cell.Value}")
Next
$vbLabelText   $csharpLabel

程式碼非常簡潔、清晰、易懂。 可以使用簡單的語法引用單元格範圍,如 foreach 循環所示: sheet["A2:A6"],並且可以遍歷每個單元格以獲取其值。 在此,您將在主控台輸出中看到 A 欄第 2 行至第 6 行的名稱:

Microsoft Visual Studio 偵錯控制台顯示讀取 Excel 儲存格 A2 到 A6 的輸出,顯示以下姓名:John、Sara、Peter、Mathew 和 Katherine 使用 C# 成功讀取包含姓名的 Excel 儲存格範圍 (A2:A6) 的主控台輸出示例

若需進一步了解儲存格值的讀取與寫入,請參閱這篇關於在 C# 中讀取 Excel 檔案的範例教學。 您亦可探索進階功能,例如套用公式操作命名範圍

如何一次匯入整個工作表?

IronXL 可以使用行和列索引一次讀取 Excel 工作表。 這在您需要處理工作表中的所有資料,或將 Excel 轉換為 CSV 或 JSON 等其他格式時,特別有用。 以下 IronXL 程式碼範例可協助您將整個 Excel 檔案的資料以相同格式輸出至主控台:

WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();

// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
    // Traverse all columns of specific Row
    for (int j = 0; j < sheet.Columns.Count(); j++)
    {
        // Get the values
        string val = sheet.Rows[i].Columns[j].Value.ToString();
        Console.Write("{0}\t", val);
    }
    Console.WriteLine();
}

// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row => 
    row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();
Dim workbook As WorkBook = WorkBook.Load("test.xlsx")
Dim sheet As WorkSheet = workbook.WorkSheets.First()

' Traverse all rows of Excel WorkSheet
For i As Integer = 0 To sheet.Rows.Count() - 1
    ' Traverse all columns of specific Row
    For j As Integer = 0 To sheet.Columns.Count() - 1
        ' Get the values
        Dim val As String = sheet.Rows(i).Columns(j).Value.ToString()
        Console.Write("{0}" & vbTab, val)
    Next
    Console.WriteLine()
Next

' Alternative method using LINQ for more efficient processing
Dim allData = sheet.Rows.SelectMany(Function(row) 
    row.Columns.Select(Function(col) If(col.Value?.ToString(), ""))).ToList()
$vbLabelText   $csharpLabel

對於較大的 Excel 檔案,您可能需要考慮使用 DataTableDataSet 物件,以獲得更好的效能並更輕鬆地進行資料處理:

// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers

// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write($"{item}\t");
    }
    Console.WriteLine();
}
' Convert worksheet to DataTable for easier manipulation
Dim dataTable As DataTable = sheet.ToDataTable(True) ' True = first row contains headers

' Process data using DataTable methods
For Each row As DataRow In dataTable.Rows
    For Each item In row.ItemArray
        Console.Write($"{item}" & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

輸出檔案

Microsoft Visual Studio 偵錯控制台顯示員工資料表,該表包含姓名、職稱和薪資列,顯示從 Excel 檔案讀取的 5 筆員工記錄 主控台輸出成功顯示從 Excel 檔案匯入的員工資料,並以正確格式呈現姓名、職稱及薪資資訊。

.

匯入 Excel 檔案後的下一步是什麼?

本文示範了如何在未安裝 Microsoft Excel 的情況下,使用 C# 匯入並讀取 Excel 檔案。 內容涵蓋了從 Excel 試算表讀取資料的多種方式,範圍從單一儲存格到整個工作表皆有。 IronXL 還能協助您在 C# 中建立 Excel 檔案,無需安裝任何 Excel 軟體。

成功匯入 Excel 資料後,您可能想進一步探索其他功能:

IronXL 提供了一個一體化解決方案,以程式設計方式實現所有與 Microsoft Excel 文件相關的任務。 您可以執行公式計算、字串或數字排序、截取與追加、尋找與替換、合併與拆分儲存格、節省檔案,以及更多功能。 您可以編輯儲存格值,並設定儲存格資料格式,同時驗證試算表資料。 它亦支援 CSV 檔案,並協助您無縫處理 Excel 資料。

針對 Enterprise 級應用程式,建議探索各種平台的部署選項,包括 Docker 容器Azure Functions 以及 AWS Lambda

IronXL提供免費試用,其 Lite 套餐起價僅為 $799,可用於商業用途。 此函式庫提供詳盡的文件教學指南程式碼範例,協助您在 C# 應用程式中快速上手 Excel 檔案操作。

常見問題解答

如何在不使用 Interop 的情況下在 C# 中匯入和讀取 Excel 文件?

您可以使用 IronXL 庫在 C# 中匯入和讀取 Excel 文件。只需使用 WorkBook.Load("file.xlsx") 讀取 Excel 文件,即可在無需安裝 Microsoft Excel 的情況下訪問和處理數據。

IronXL 庫與哪些平台兼容?

IronXL 與所有 .NET Framework兼容,可在多個平台上使用,包括 Windows、Linux、MacOS、Docker、Azure 和 AWS。

我可以使用 IronXL 編輯 Excel 文件而不安裝 Microsoft Excel 嗎?

可以,IronXL 允許您在 C# 中以程式化方式創建和編輯 Excel 文件,而無需在系統上安裝 Microsoft Excel。

IronXL 可以處理哪些 Excel 格式?

IronXL 支援各種 Excel 文件格式,如 XLS、XLSX、CSV、TSV 等,方便數據的匯入和操作。

在 C# 項目中使用 IronXL 有什麼先決條件?

要使用 IronXL,請確保已安裝 Visual Studio。您可以通過 NuGet 套件管理器將 IronXL 添加到您的項目中,或下載並引用 .NET Excel DLL。

如何在 C# 中使用 IronXL 加載 Excel 活頁簿?

要在 C# 中加載 Excel 活頁簿,使用 IronXL 的 WorkBook.Load("path/to/file.xlsx") 方法,可打開並操作活頁簿。

IronXL 能處理 Excel 公式嗎?

可以,IronXL 能夠在編輯工作表時無縫處理和重新計算 Excel 公式,以確保數據計算的準確性。

如何使用 IronXL 從特定單元格讀取數據?

要從特定單元格讀取數據,使用 IronXL 語法如 sheet["B2"].StringValue 從 B2 單元格獲取值。

我可以使用 IronXL 循環遍歷 Excel 表格中的一個範圍的單元格嗎?

可以,您可以使用 IronXL 循環遍歷一個範圍的單元格,語法如 foreach (var cell in sheet["A1:C3"]) 逐一處理每個單元格。

如何將 IronXL 整合到 ASP.NET 應用程序中?

IronXL 可以通過 NuGet 添加到 ASP.NET 應用程序中,並在項目中引用,從而實現 Web 應用程序中的 Excel 文件操作。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我