跳至頁尾內容
使用 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 Web 應用程式、桌面應用程式還是基於雲端的解決方案。

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。 社群版是免費的,足以滿足大多數開發需求。

  2. IronXL - 這是一個幫助你在 C# 中處理給定路徑的 Excel 表格的庫。 必須先將其安裝到您的 C# 程式中才能使用。 IronXL 可以輕鬆地從NuGet 網站下載,也可以透過 Visual Studio 工具中的"管理 NuGet 套件"介面直接安裝。 如果您喜歡手動安裝,也可以直接下載.NET Excel DLL檔。

對於生產環境部署,您需要套用許可證金鑰來移除浮水印並啟用全部功能。 可以使用試用版進行開發和測試。

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

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

using IronXL;
using 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: ",");
$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];
$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;
$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}");
}
$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();
$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();
}
$vbLabelText   $csharpLabel

輸出檔案

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

.

匯入Excel檔案後,下一步該怎麼做?

本文示範如何在未安裝 Microsoft Excel 的情況下,使用 C# 匯入和讀取 Excel 檔案。 它涵蓋了從 Excel 電子表格中讀取資料的多種方法,從單一儲存格到整個工作表。 IronXL 還可以幫助您在無需安裝任何 Excel 的情況下,並用 C#建立 Excel 檔案

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

*資料處理*將儲存格區域進行排序套用篩選器將行和列分組 資料驗證:實施資料驗證規則以確保資料完整性 格式設定:套用儲存格樣式條件格式數字格式 圖表和視覺化**:建立圖表添加圖像以增強資料呈現效果 *安全性:對工作簿或單一工作表設定密碼保護

IronXL 提供了一個一體化解決方案,以程式設計方式實現所有與 Microsoft Excel 文件相關的任務。 您可以執行公式計算、字串或數字排序、修剪和追加、尋找和取代、合併和取消合併儲存格、儲存檔案等等。 您可以編輯儲存格值,也可以設定儲存格資料格式,並驗證電子表格資料。 它還支援CSV 文件,並可幫助您無縫處理 Excel 資料。

對於企業應用程序,可以考慮探索各種平台的部署選項,包括Docker 容器Azure FunctionsAWS 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 在內的多個平台上使用。

我可以在沒有安裝 Microsoft Excel 的情況下使用 IronXL 編輯 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 應用程式中?

透過 NuGet 新增庫並在專案中引用 IronXL,即可輕鬆將其整合到 ASP.NET 應用程式中,從而在 Web 應用程式中實現 Excel 檔案操作。

喬迪·巴迪亞
軟體工程師
喬迪精通Python、C#和C++,除了在Iron Software運用這些技能外,他還從事遊戲程式設計。他參與產品測試、產品開發和研究等工作,為產品的持續改進做出了巨大貢獻。豐富的經驗讓他始終保持挑戰性和工作熱情,他表示這是他最喜歡在Iron Software工作的原因之一。喬迪在佛羅裡達州邁阿密長大,畢業於佛羅裡達大學,主修電腦科學和統計學。