跳過到頁腳內容
使用 IRONXL

C# Open Excel Application Files Without Microsoft Office

在 C# 中開啟和處理 Excel 檔案是幾乎所有 .NET 開發人員都會遇到的問題。 無論您是自動產生每週報告、讀取匯入數據,還是建立可即時產生電子表格的工具,您處理 Excel 檔案的方式都會對速度、可靠性和部署靈活性產生重大影響。

在本教程中,我們將學習如何使用IronXL (一個輕量級的 Excel 庫,無需安裝 Microsoft Office 即可讀取、編輯和寫入工作簿)在 C# 中開啟 Excel 檔案。 你會發現,在 C# 應用程式中以程式設計方式載入資料、存取工作表和處理儲存格是多麼簡單。

為什麼選擇 IronXL 而不是 Microsoft.Office.Interop.Excel?

雖然 Microsoft.Office.Interop.Excel 一直是 Excel 自動化的傳統方法,但它存在一些重大局限性,使得 IronXL 成為現代應用程式的更佳選擇。 微軟本身也不建議在伺服器上使用 Office Interop

特徵

IronXL

Microsoft.Office.Interop.Excel

需要安裝 Excel

✅ 否

❌ 是的

跨平台支援

✅ Windows、Linux、macOS

❌ 僅限 Windows 系統

伺服器部署

✅ 完全支持

❌ 微軟不推薦

記憶體管理

✅ 自動

❌ 需要手動清理 COM 對象

API複雜度

✅ 簡單直觀

❌ 複雜的 COM 介面

文件格式支援

✅ XLS、XLSX、CSV、TSV、JSON

⚠️ 僅限 Excel 格式

IronXL 消除了對 Microsoft Excel 的依賴,使其成為伺服器環境、 Docker 容器Azure 等雲端平台的理想選擇。 該程式庫提供了一個簡潔、現代的 API,無需處理 COM 物件或手動記憶體管理。

如何安裝 IronXL for .NET?

IronXL 的入門非常簡單; 幾分鐘內即可將其添加到您的專案中。 只需透過 NuGet 套件管理器安裝即可:

Install-Package IronXL.Excel

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

如何在 C# 中開啟和讀取 Excel 檔案?

使用 IronXL 開啟現有的 Excel 檔案只需要幾行程式碼。 該庫支援讀取各種 Excel 格式,包括 XLS 和 XLSX,如下面的程式碼片段所示:

// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
Imports System

' Load an existing Excel file
Dim workbook As WorkBook = WorkBook.Load("sales-data.xlsx")
' Access the first worksheet
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Or access a worksheet by name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("January Sales")
' Read a specific cell value
Dim cellValue As String = sheet("A1").StringValue
Console.WriteLine($"Cell A1 contains: {cellValue}")
$vbLabelText   $csharpLabel

以上程式碼示範如何將 Excel 檔案載入到 WorkBook 物件中,該物件代表整個 Excel 檔案。 WorkBook.Load() 方法會自動偵測檔案格式(XLS、XLSX、CSV 或 TSV)並進行對應的處理。

您可以使用 GetWorkSheet() 方法按索引或名稱存取工作表。 透過直覺的括號表示法可以存取各個單元格的值,使程式碼具有很高的可讀性。 對於更複雜的場景,請探索使用 Excel 區域儲存格資料格式

輸出

如何使用 IronXL 在 C# 中開啟 Excel 檔案:圖 1 - 開啟並讀取範例 Excel 文件

如何建立新的Excel工作簿?

使用 IronXL 的電子表格建立功能,建立新的 Excel 檔案同樣簡單:

// Create a new workbook
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
// Create a worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add data to cells
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Revenue";
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 45000;
// Apply formatting
sheet["B2"].FormatString = "$#,##0.00";
// Save the workbook
workbook.SaveAs("quarterly-report.xlsx");
// Create a new workbook
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
// Create a worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add data to cells
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Revenue";
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 45000;
// Apply formatting
sheet["B2"].FormatString = "$#,##0.00";
// Save the workbook
workbook.SaveAs("quarterly-report.xlsx");
' Create a new workbook
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add metadata
workbook.Metadata.Author = "Sales Department"
' Create a worksheet
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Q1 Report")
' Add data to cells
sheet("A1").Value = "Product"
sheet("B1").Value = "Revenue"
sheet("A2").Value = "Software Licenses"
sheet("B2").Value = 45000
' Apply formatting
sheet("B2").FormatString = "$#,##0.00"
' Save the workbook
workbook.SaveAs("quarterly-report.xlsx")
$vbLabelText   $csharpLabel

在這個程式碼範例中,WorkBook.Create() 方法會使用您指定的格式初始化一個新的工作簿。 您可以使用 CreateWorkSheet() 新增多個工作表,使用各種資料類型填入 Excel 行和列中的特定儲存格,並套用格式樣式。 該程式庫會自動處理資料類型轉換和 Excel 特有的格式要求。 了解更多關於C#中Excel公式的高階計算方法。

輸出

如何在C#中使用IronXL開啟Excel檔案應用程式:圖2 - 建立新的Excel工作簿

如何讀取和處理Excel工作表資料?

IronXL在資料擷取和處理方面表現出色:

// Load workbook
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a range of cells
var range = sheet["A1:D5"];
foreach (var cell in range)
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert to DataTable for easier processing
System.Data.DataTable dataTable = sheet.ToDataTable(true);
// Process data using LINQ
decimal total = sheet["C2:C5"].Sum();
Console.WriteLine($"Total: {total}");
// Load workbook
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a range of cells
var range = sheet["A1:D5"];
foreach (var cell in range)
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert to DataTable for easier processing
System.Data.DataTable dataTable = sheet.ToDataTable(true);
// Process data using LINQ
decimal total = sheet["C2:C5"].Sum();
Console.WriteLine($"Total: {total}");
' Load workbook
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read a range of cells
Dim range = sheet("A1:D5")
For Each cell In range
    Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next
' Convert to DataTable for easier processing
Dim dataTable As System.Data.DataTable = sheet.ToDataTable(True)
' Process data using LINQ
Dim total As Decimal = sheet("C2:C5").Sum()
Console.WriteLine($"Total: {total}")
$vbLabelText   $csharpLabel

在這裡,我們使用相同的流程在專案中開啟我們的 Excel 檔案。 範圍選擇語法(sheet["A1:D5"])提供了一種優雅的方式來處理多個單元格。 ToDataTable() 方法將工作表資料轉換為 DataTable,從而實現與資料庫的整合和資料綁定場景。 IronXL 也支援直接對範圍使用聚合函數,例如 Sum()、Average() 和 Max()。 若要處理更大的資料集,請參閱完整的 API 文件

如何在 C# 中使用 IronXL 開啟 Excel 檔案應用程式:圖 3 - 處理後的 Excel 資料輸出

無需 Microsoft Office 即可運作

IronXL最大的優點之一是它能夠獨立於Microsoft Office運作。這項特性使其擁有多種部署方案:

*雲端部署:可在 Azure、AWS 或 Google Cloud 上執行,無需擔心授權問題

  • Docker 容器:無需複雜的 Office 安裝即可整合到容器化應用程式中
  • Linux 伺服器:部署到經濟高效的 Linux 環境
  • CI/CD 管線:在自動化建置過程中產生 Excel 報告

該庫在內部處理所有 Excel 文件的生成和操作,並利用其自身的渲染引擎來確保在所有平台上獲得一致的結果。

結論

IronXL 提供了一種現代化且高效的解決方案,用於在 C# 中開啟和操作 Excel 檔案。 透過消除對 Excel 的依賴並提供簡潔的 API,它簡化了開發,同時實現了更廣泛的部署選項。 無論您是建立桌面應用程式、Web 服務還是基於雲端的解決方案,IronXL 都能確保您的 Excel 自動化在所有環境中可靠地運作。

準備好實現 Excel 自動化現代化了嗎? 下載 IronXL 免費試用版,價格從 $liteLicense 起。

常見問題解答

不使用 Microsoft Office,如何在 C# 中開啟 Excel 檔案?

您可以使用 IronXL 以 C# 開啟 Excel 檔案,而不需要 Microsoft Office。IronXL 提供了 Interop 的現代化替代方案,提供更好的效能,且不需依賴 Excel。

在 C# 中使用 IronXL.Excel 處理 Excel 檔案有哪些好處?

IronXL.Excel 提供多項優點,包括效能提升、不需依賴 Excel 安裝,以及部署更具彈性。它可讓開發人員自動化報表、讀取資料匯入,以及有效率地產生試算表。

IronXL 能處理 Excel 檔案的自動化任務嗎?

是的,IronXL 非常適合自動化任務,例如產生週報、讀取資料匯入,以及建立動態試算表生成工具。

IronXL 是否適合取代 C# 應用程式中的 Interop?

IronXL.Excel 是 Interop 的合適替代品,它提供了一個現代化的解決方案,在處理 Excel 檔案時不需要 Excel 的依賴性,並可改善應用程式的效能。

IronXL 是否支援讀寫 Excel 檔案?

IronXL 完全支援從 Excel 檔案讀取或寫入 Excel 檔案,使其成為 .NET 開發人員處理試算表資料的多用途工具。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。