跳過到頁腳內容
使用 IRONXL

如何在 C# 中導入 Excel 文件

在C#中使用IronXL導入Excel文件,這是一個.NET程式庫,可以在未安裝Microsoft Excel的情況下讀取XLS、XLSX、CSV文件。 只需使用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是一個多功能程式庫,可以整合到Console、Desktop和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文件更加容易。 您可以從Microsoft網站下載並安裝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文件?

Microsoft 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

代碼非常簡單、乾淨和清晰。 可以使用sheet["A2:A6"],每個單元格可以迭代以獲取其值。 在這裡,您可以在控制台輸出中看到從第2行到第6行的A列中的名字:

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。

我可以使用 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 小時在線上。
聊天
電子郵件
打電話給我