跳過到頁腳內容
使用 IRONXL

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

幾乎所有 .NET 開發人員遲早都會遇到在 C# 中開啟和處理 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 功能比較
特點 IronXL Microsoft.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 中開啟套件管理員控制台並執行:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

這兩條指令皆會安裝相同的套件。 第一個工具適用於 Visual Studio 套件管理員控制台,第二個則適用於 .NET CLI。 安裝完成後,您可以在專案檔案中的 <PackageReference Include="IronXL.Excel" /> 下驗證套件引用是否出現。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

IronXL 支援哪些 .NET 版本?

IronXL 支援所有現代 .NET 版本,包括 .NET 10、.NET 8、.NET 6、.NET Framework 4.6.2 及以上版本,以及 .NET Standard 2.0。如此廣泛的支援範圍意味著,您既可在針對 .NET 10 開發的新專案中使用 IronXL,也能在運行於傳統 .NET Framework 上的舊版應用程式中使用。

此函式庫以單一 NuGet 套件形式提供,系統會自動為您的目標框架選取正確的二進位檔。 無需額外依賴項、無需特定平台的安裝程序,亦無需 Excel 授權。 請參閱 IronXL 相容性指南,以獲取支援的執行環境與平台的完整清單。

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

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

// 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}");
// 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}");
' Load an existing Excel file
Dim workbook As WorkBook = WorkBook.Load("sales-data.xlsx")

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

' Read a numeric value
Dim revenue As Decimal = sheet("B2").DecimalValue
Console.WriteLine($"Revenue: {revenue:C}")

' Check cell data type before reading
Dim cell = sheet("C3")
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}")
$vbLabelText   $csharpLabel

WorkBook.Load() 方法會自動偵測檔案格式(XLS、XLSX、CSV 或 TSV),並處理解析,無需任何額外的配置。 您可以透過索引(使用 workbook.WorkSheets[0])或名稱(使用 GetWorkSheet())存取工作表。 透過方括號表示法(sheet["A1"])可以讀取各個單元格的值,從而使程式碼簡潔明了。有關支援的文件類型的完整列表,請參閱SpreadsheetML 的 Open XML SDK 文件IronXL NuGet 套件頁面

對於類型化訪問,IronXL 直接在單元格上公開了諸如 .StringValue.DecimalValue.IntValue.BoolValue 和 @@--CODE-993/--CODE-993 之類的屬性。 這消除了常見於通用物件導向 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);
// 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);
Imports System
Imports System.IO

' Load from a byte array (e.g., from a database or HTTP response)
Dim fileBytes As Byte() = File.ReadAllBytes("sales-data.xlsx")
Dim workbookFromBytes As WorkBook = WorkBook.Load(fileBytes)

' Load from a MemoryStream
Using memStream As New MemoryStream(fileBytes)
    Dim workbookFromStream As WorkBook = WorkBook.Load(memStream)

    ' Access data the same way regardless of source
    Dim sheet As WorkSheet = workbookFromStream.DefaultWorkSheet
    Console.WriteLine(sheet("A1").StringValue)
End Using
$vbLabelText   $csharpLabel

基於流的載入在 ASP.NET Core 控制器中特別有用,因為您會收到 IFormFile 上傳。 只需呼叫 formFile.OpenReadStream() 並將結果傳遞給 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.");
// 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.");
' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)

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

' Create a named worksheet
Dim sheet As WorkSheet = 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.")
$vbLabelText   $csharpLabel

WorkBook.Create() 方法以指定的格式初始化一個新的工作簿。 您可以使用 CreateWorkSheet() 新增多個工作表,使用各種資料類型(包括字串、數字、布林值和日期)填入儲存格,並透過 Formula 屬性直接套用 Excel 公式。 此函式庫會自動處理資料型別轉換及 Excel 專屬的格式化需求。

若需設定標題樣式或添加邊框,請使用儲存格樣式 API。 關於基於範本的報表生成,請參閱"從現有 Excel 範本匯出"指南

輸出

如何在C#中使用IronXL開啟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}");
// 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}");
Imports System
Imports System.Data
Imports System.Linq

' Load a workbook and select the default sheet
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a rectangular range of cells
Dim range = sheet("A1:D10")
For Each cell In range
    Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next

' Convert the worksheet to a DataTable for database integration
Dim dataTable As DataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders:=True)
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}")

' Use aggregate functions directly on a range
Dim total As Decimal = sheet("C2:C10").Sum()
Dim average As Decimal = sheet("C2:C10").Avg()
Dim maxValue As Decimal = 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
Dim highValue = dataTable.AsEnumerable() _
    .Where(Function(row) row.Field(Of Decimal)("Revenue") > 10000) _
    .ToList()
Console.WriteLine($"High-value rows: {highValue.Count}")
$vbLabelText   $csharpLabel

範圍選擇語法(sheet["A1:D10"])提供了一種優雅的方式來一次處理多個單元格。 ToDataTable() 方法將工作表資料轉換為 System.Data.DataTable,此資料可直接與 Entity Framework、資料綁定控制項和 SQL 批次複製作業整合。 IronXL 也支援聚合函數-- Sum(), Avg(), Max(), 和 Min() -- 直接作用於範圍,從而消除了編寫手動迭代程式碼的需要。

若需高效處理超大規模資料集,請參閱完整的 IronXL API 參考文件,了解串流與分塊處理模式。

如何在 C# 中使用 IronXL 開啟 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}");
}
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}");
}
Imports System
Imports System.Linq

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

' Get total row and column counts
Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount

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

' Iterate over all rows and columns
For row As Integer = 1 To rowCount
    For col As Integer = 1 To colCount
        Dim cell = sheet.GetCellAt(row, col)
        If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(cell.Text) Then
            Console.WriteLine($"[{row},{col}] = {cell.Text}")
        End If
    Next
Next

' Find the first cell containing specific text
Dim searchResult = sheet("A1:Z100") _
    .FirstOrDefault(Function(c) c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase))

If searchResult IsNot Nothing Then
    Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}")
End If
$vbLabelText   $csharpLabel

此模式常見於資料驗證工作流程中,您需要先掃描上傳的檔案以尋找特定值,然後才進行後續處理。 若需進階篩選功能,請參閱 Excel 範圍選取文件

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

使用 IronXL 最實用的優勢之一,在於它無需在系統中安裝 Microsoft Office 即可運作。 這帶來了基於 Interop 的解決方案根本無法比擬的部署靈活性:

雲端與容器部署

IronXL 可在 Azure App Service、AWS Lambda 及 Google Cloud Run 上運行,無需任何特殊設定。 由於它不依賴 Office,您既可避免授權費用,也能省去將 Office 納入容器映像所帶來的複雜性。 一個使用 IronXL for .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 測試執行期間驗證匯入的資料檔案

關於 .NET Core 的具體內容,請參閱 .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");
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");
Imports IronXL

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

' Apply bold, font size, and background color to header row
Dim 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
Dim 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")
$vbLabelText   $csharpLabel

如需了解樣式設定選項的完整操作指南,請參閱如何設定儲存格、邊框及字型樣式

在 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");
// 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");
' Load a CSV file and save as XLSX
Dim csvBook As WorkBook = WorkBook.Load("data-import.csv")
csvBook.SaveAs("data-import.xlsx")

' Load an XLSX file and export as CSV
Dim xlsxBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv")
$vbLabelText   $csharpLabel

有關 CSV 處理的更多詳細資訊,包括分隔符設定與編碼選項,請參閱 C# CSV 讀取器教學指南CSV 轉 XLSX 轉換指南

如何開始免費試用?

IronXL 提供免費開發授權供下載,讓您在決定購買前,可先測試其完整功能集。 試用期間無功能限制——您評估的正是實際生產環境中運行的同一套函式庫。

開始使用:

  1. 透過 NuGet 安裝套件:
    dotnet add package IronXL
    dotnet add package IronXL
    SHELL
  2. 請造訪 IronXL 授權頁面以取得免費試用授權金鑰。
  3. 在任何 IronXL 呼叫之前,請先在程式碼中套用該金鑰:
    IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
    IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
    Imports IronXL
    
    IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
    $vbLabelText   $csharpLabel

提供適用於個人開發者、團隊及組織的授權方案。 IronXL 產品頁面提供完整的定價詳情與部署選項,包含免版稅的發行權。 如欲更全面地了解所有 Iron Software 產品及其整合方式,請參閱 Iron Software 產品 Suite

常見問題解答

如何在無需 Microsoft Office 的情況下使用 C# 開啟 Excel 文件?

您可以使用 IronXL 在 C# 中開啟 Excel 文件,而無需 Microsoft Office。IronXL 提供了比 Interop 更現代化的替代方案,性能更佳且無需 Excel 依賴。

使用 IronXL 處理 C# 中 Excel 文件的好處是什麼?

IronXL 提供了多個好處,包括提升的性能、無需安裝 Excel 和更大的部署靈活性。它允許開發者高效地自動化報告、讀取資料導入和生成電子表格。

IronXL 能夠處理自動化任務的 Excel 文件嗎?

是的,IronXL 非常適合用於自動化任務,如生成每週報告、讀取資料導入以及創建動態電子表格生成工具。

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

IronXL 是 Interop 的合適替代品,提供了一個現代化的解決方案,消除了對 Excel 依賴,並在處理 Excel 文件時提升了應用程式性能。

IronXL 支援讀取和寫入 Excel 文件嗎?

IronXL 完全支援從 Excel 文件讀取和寫入,這使其成為 .NET 開發者處理電子表格資料的多功能工具。

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

鋼鐵支援團隊

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