如何使用 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 |
|---|---|---|
| 需要安裝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支援哪些.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}")
WorkBook.Load()方法會自動檢測檔案格式--XLS,XLSX,CSV或TSV--並處理解析,無需其他配置。 您可以通過索引使用GetWorkSheet()來存取工作表。 個別儲存格值可以通過括號表示法(sheet["A1"])讀取,這使得程式碼簡潔且富有表現力。欲瞭解支援的檔案型別完整列表,請參閱Open XML SDK文件中有關SpreadsheetML的內容以及IronXL NuGet套件頁面。
對於型別化存取,IronXL在儲存格上直接公開.DateTimeValue等屬性。 這消除了使用基於通用物件API的常見型別猜測。若需更複雜的情境,請存取處理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
基於流的載入在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.")
WorkBook.Create()方法初始化指定格式的新工作簿。 您可以使用Formula屬性應用Excel公式。 該程式庫自動處理資料型別轉換和Excel特定的格式要求。
要為標題設置樣式和新增邊框,請使用儲存格樣式API。 若需基於模板的報告生成,請參閱從現有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}")
範圍選擇語法(sheet["A1:D10"])提供了一種優雅的方式來一次性工作多個儲存格。 System.Data.DataTable,該方法直接與Entity Framework、資料繫結控制項和SQL批量拷貝操作整合。 IronXL還支援彙總函式--Min()--直接在範圍上,消除了撰寫手動迭代程式碼的需要。
若要有效處理超大型資料集,請參閱完整的IronXL API參考以了解流與分塊處理模式。

如何篩選和搜尋整個工作表中的儲存格?
除了基於範圍的存取,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
這一模式在資料驗證工作流程中非常常見,在進一步處理它之前,您需要掃描上傳的檔案以查找特定值。 關於高級篩選使用案例,請檢視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")
有關樣式選項的完整指南,請參閱如何設置單元格、邊框和字體樣式。
在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")
有關CSV處理的更多細節,包括分隔符配置和編碼選項,請參閱C# CSV讀取器教程和CSV到XLSX轉換指南。
如何開始免費試用?
IronXL可以下載,提供免費的開發授權,讓您在購買前測試完整的功能集。 試用期間沒有功能限制--用於生產的同一個程式庫就是您評估的程式庫。
開始:
- 透過NuGet安裝套件:
dotnet add package IronXL.Excel
- 造訪IronXL授權頁面以獲取免費試用序號。
- 在任何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 開發人員處理試算資料的一個多用途工具。




