IRONSOFTWAREHOME
USING IRONXL

如何使用 IronXL 在 C# 中開啟 Excel 文件

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

**使用C#打開和處理Excel檔案是幾乎每個.NET開發者遲早要遇到的問題。**無論您是在自動化每週報告、處理資料匯入,還是構建即時生成試算表的工具,您選擇的程式庫都會在速度、可靠性和部署彈性上產生重大影響。

本教程將講解如何使用IronXL在C#中打開Excel檔案--這是一個輕量級的Excel程式庫,它可以在不需要安裝Microsoft Office的情況下讀取、編輯和寫入工作簿。 您將看到如何簡單地在您的C#應用程式中載入資料、存取工作表和以程式方式處理儲存格。

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

儘管Microsoft.Office.Interop.Excel一直是Excel自動化的傳統方法,但它具有顯著的限制,使得IronXL成為現代應用程式的更好選擇。 Microsoft本身建議不要在伺服器上使用Office Interop,指出其不穩定性、可擴展性問題和不受支持的部署情境。

IronXL 與 Microsoft.Office.Interop.Excel 功能比較
功能IronXLMicrosoft.Office.Interop.Excel
需要安裝Excel
跨平台支援Windows、Linux、macOS僅限Windows
伺服器部署完整支援Microsoft不建議
記憶體管理自動需要手動COM清理
API 複雜性簡單且直觀複雜的COM介面
檔案格式支援XLS、XLSX、CSV、TSV、JSON僅限於Excel格式
執行緒安全性支援僅限單執行緒

IronXL消除了對Microsoft Excel的依賴,使其非常適合伺服器環境、Docker容器雲端平台如Azure。 該程式庫提供了乾淨、現代的API,去除處理COM物件或手動管理記憶體的需要。 除了打開檔案,IronXL從公式評估圖表生成再到儲存格樣式化都能處理。

如何在.NET專案中安裝IronXL?

開始使用IronXL非常簡單--它可以透過NuGet套件管理器在幾分鐘內新增到您的專案中。 打開 Visual Studio 中的包管理器控制台並運行:

PM > Install-Package IronXL.Excel

兩個命令安裝的是同一個套件。 在Visual Studio套件管理器控制台中使用第一個,並在.NET CLI中使用第二個。 安裝後,您可以驗證套件引用出現在您的專案檔案中的<PackageReference Include="IronXL.Excel" />下。

第一步:
arrow pointer

IronXL支援哪些.NET版本?

IronXL針對現代.NET版本的全範圍,包括.NET 10、.NET 8、.NET 6、.NET Framework 4.6.2及以上以及.NET Standard 2.0。這種廣泛的支援意味著您可以在目標.NET 10的新專案以及運行於傳統.NET Framework的舊應用程式中使用IronXL。

該程式庫作為一個單一的NuGet包提供,能夠自動選擇正確的二進制文件以適應您的目標框架。 無需額外的依賴性,無需特定平台的安裝,也無需Excel授權。 請存取IronXL相容性指南以查看支援的運行時環境和平台的完整列表。

如何在C#中打開和讀取現有的Excel檔案?

使用IronXL打開現有Excel檔案只需幾行程式碼。 該程式庫支援讀取XLS和XLSX檔案,以及CSV和TSV格式,通過統一的API。 以下範例展示了必要的工作流程:

// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");

// Access the first worksheet by index
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}");

// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");

// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");

WorkBook.Load()方法會自動檢測檔案格式--XLS,XLSX,CSV或TSV--並處理解析,無需其他配置。 您可以通過索引使用GetWorkSheet()來存取工作表。 個別儲存格值可以通過括號表示法(sheet["A1"])讀取,這使得程式碼簡潔且富有表現力。欲瞭解支援的檔案型別完整列表,請參閱Open XML SDK文件中有關SpreadsheetML的內容以及IronXL NuGet套件頁面

對於型別化存取,IronXL在儲存格上直接公開.DateTimeValue等屬性。 這消除了使用基於通用物件API的常見型別猜測。若需更複雜的情境,請存取處理Excel範圍指南儲存格資料格式文件

輸出

如何使用IronXL在C#中打開Excel檔案:圖1 - 打開和讀取範例Excel檔案

如何從流或位元組陣列中載入Excel檔案?

在網頁應用程式和雲函式中,您經常會接收到作為流或位元組陣列的檔案資料,而不是文件路徑。 IronXL處理兩種情況:

// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);

// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);

// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);

基於流的載入在ASP.NET Core控制器中特別有用,您可以收到一個IFormFile上傳。 只需調用WorkBook.Load()。 完整的ASP.NET Core整合模式,請參閱ASP.NET Core Excel教程

如何在C#中建立新的Excel工作簿?

使用IronXL的試算表建立功能建立新的Excel檔案同樣直接。 以下範例構建了一個格式化的季度報告:

// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";

// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");

// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";

// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;

sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;

// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";

// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";

// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");

WorkBook.Create()方法初始化指定格式的新工作簿。 您可以使用Formula屬性應用Excel公式。 該程式庫自動處理資料型別轉換和Excel特定的格式要求。

要為標題設置樣式和新增邊框,請使用儲存格樣式API。 若需基於模板的報告生成,請參閱從現有Excel模板匯出的指南

輸出

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

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

IronXL通過基於範圍的操作和DataTable轉換高效地處理資料提取及批次處理:

// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");

// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();

Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");

// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
    .Where(row => row.Field<decimal>("Revenue") > 10000)
    .ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");

範圍選擇語法(sheet["A1:D10"])提供了一種優雅的方式來一次性工作多個儲存格。 System.Data.DataTable,該方法直接與Entity Framework、資料繫結控制項和SQL批量拷貝操作整合。 IronXL還支援彙總函式--Min()--直接在範圍上,消除了撰寫手動迭代程式碼的需要。

若要有效處理超大型資料集,請參閱完整的IronXL API參考以了解流與分塊處理模式。

如何使用IronXL在C#中打開Excel檔案:圖3 - 處理過的Excel資料輸出

如何篩選和搜尋整個工作表中的儲存格?

除了基於範圍的存取,IronXL允許您按值搜尋儲存格,應用條件邏輯,以及以程式方式迭代行和列:

WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");

// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
    for (int col = 1; col <= colCount; col++)
    {
        var cell = sheet.GetCellAt(row, col);
        if (cell != null && !string.IsNullOrEmpty(cell.Text))
        {
            Console.WriteLine($"[{row},{col}] = {cell.Text}");
        }
    }
}

// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
    .FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));

if (searchResult != null)
{
    Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}

這一模式在資料驗證工作流程中非常常見,在進一步處理它之前,您需要掃描上傳的檔案以查找特定值。 關於高級篩選使用案例,請檢視Excel範圍選擇文件

此方法支援哪些部署情況?

使用IronXL的實用優勢之一是它能夠在系統上不安裝Microsoft Office的情況下操作。 這帶來了Interop-based解決方案無法匹敵的部署靈活性:

雲和容器部署

IronXL 在Azure App Service、AWS Lambda 和 Google Cloud Run 上運行,不需要任何特殊配置。 由於它不依賴於Office,您避免了包含Office在容器影像中的授權費用和複雜性。 使用IronXL的.NET 10應用程式的最小Dockerfile只需要標準的.NET運行環境影像。

基於Docker的部署同樣簡單。 IronXL Docker指南涵蓋了Debian、Alpine和Windows容器配置。 在所有情況下,您透過NuGet安裝IronXL,並且它在沒有其他系統套件的情況下運行。

伺服器和CI/CD管道使用

伺服器環境經常缺乏GUI,並且不能運行依賴於Windows桌面會話的應用程式。 IronXL完全在無頭模式下運行,使其適合用於:

  • 在計劃的背景作業中生成Excel報告
  • 在ASP.NET Core API中處理上傳的試算表
  • 在自動化管道中將DataTable或資料庫查詢結果匯出到XLSX
  • 在CI/CD測試執行中驗證匯入的資料檔案

針對ASP.NET Core,特別是請參閱ASP.NET Core Excel匯出教程,涵蓋文件流、響應標頭和適當的處置模式。

跨平台開發

IronXL針對.NET Standard 2.0並在Linux和macOS上原生運行,啟用跨平台開發工作流程。 使用macOS的開發人員可以放心地本地撰寫和測試Excel生成程式碼,相信用於生產的Linux伺服器上的相同二進制文件能夠正常工作。 無需平台特定的API或條件編譯塊。

有關支援環境的更多細節,請造訪IronXL入門概述

如何處理基本讀取之外的常見Excel操作?

讀寫儲存格只是基礎。 實際的Excel自動化通常涉及格式化、公式、工作表管理以及格式轉換。

格式化儲存格和應用樣式

IronXL提供完整的樣式API,涵蓋字體、顏色、邊框、對齊和數字格式:

WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;

// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";

// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";

// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin;

workbook.SaveAs("formatted-report.xlsx");

有關樣式選項的完整指南,請參閱如何設置單元格、邊框和字體樣式

在Excel和CSV格式之間轉換

IronXL直接處理格式轉換,讓您載入CSV並將其儲存為XLSX,或將XLSX檔匯出為CSV以進行下游處理:

// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");

// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");

有關CSV處理的更多細節,包括分隔符配置和編碼選項,請參閱C# CSV讀取器教程CSV到XLSX轉換指南

如何開始免費試用?

IronXL可以下載,提供免費的開發授權,讓您在購買前測試完整的功能集。 試用期間沒有功能限制--用於生產的同一個程式庫就是您評估的程式庫。

開始:

  1. 透過NuGet安裝套件:

    dotnet add package IronXL.Excel

  2. 造訪IronXL授權頁面以獲取免費試用序號。

  3. 在任何IronXL調用之前在程式碼中應用序號:

    IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

授權適用於個別開發人員、團隊和組織。 IronXL產品頁面提供完整的定價詳情和部署選項,包括免版稅分發權。 若想更廣泛地了解所有Iron Software產品及其整合方式,請查看Iron Software產品套件

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立