跳至頁尾內容
USING IRONXL

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

使用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 功能比較
功能 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.Excel

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

現在開始使用IronXL。
green 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}");
// 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--並處理解析,無需其他配置。 您可以通過索引使用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);
// 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上傳。 只需調用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()方法初始化指定格式的新工作簿。 您可以使用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}");
// 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"])提供了一種優雅的方式來一次性工作多個儲存格。 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}");
}
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-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");
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.Excel
  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產品套件

常見問題

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

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

在 C# 中使用 IronXL 處理 Excel 檔案有何好處?

IronXL 提供了多項好處,包括改進的性能、無需依賴 Excel 安裝,以及更大的部署靈活性。它允許開發者自動化報告、讀取資料匯入及高效率地生成試算表。

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

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

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

IronXL 是 Interop 的合適替代品,提供現代化解決方案,消除了對 Excel 依賴的需求,並在處理 Excel 檔案時改善了應用程式性能。

IronXL 是否支持讀取和寫入 Excel 檔案?

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

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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