跳至頁尾內容
USING IRONXL

如何使用 IronXL 在 C# 中讀取 Excel 文件

在 C# 應用程式中讀取 Excel 文件是商務軟體、資料處理流程和報告系統中反覆出現的需求。 使用 Microsoft Office Interop 的傳統方法需要在每個伺服器或工作站上安裝 Excel,這會導致脆弱的相依性,進而複雜化部署和授權。 IronXL 完全移除了這種相依性——您的應用程式可以在不需安裝 Office 的情況下讀取 XLSX、XLS、CSV 和其他試算表格式。

本教學將帶您學習所有必要的技術:安裝程式庫、載入活頁簿、提取型別化儲存格值、迭代行列、運行集計計算,並建立完整的員工資料讀取程式。 所有範例均使用 C# 並以 .NET 10 為目標。


如何安裝 IronXL 以進行 Excel 處理?

在 Visual Studio 中打開 NuGet 套件管理器控制台,執行以下命令將 IronXL 新增到您的專案。 或者,如果您偏好從終端操作,可以使用第二行所示的 .NET CLI 命令:

Install-Package IronXL.Excel

套件在幾秒內安裝完成,並向您的專案新增一個受管理的程式集參考。 不需 COM 註冊、不需 Office 主要相容程式集,也不需管理特定版本的 Excel 相依性。

安裝後,在所有操作試算表資料的文件頂部新增 using 指令:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

這個單一命名空間可讓您使用 WorkSheet、儲存格範圍、型別化值屬性、集計函式,以及所有其他 IronXL 型別。 IronXL.Excel 的 NuGet Gallery 頁面 列出所有可用版本及其完整的相依樹。


IronXL 支援哪些 Excel 文件格式?

瞭解您的應用程式必須處理的格式會影響您所進行的 API 調用和專案採用的儲存決策。

XLSX——自 Excel 2007 以來的預設格式——是一個 XML 文件的 ZIP 壓縮檔案。 它支持超過一百萬行、豐富的格式化、樞紐分析表和命名範圍。 大多數現代資料管道會輸出 XLSX 格式,因此這是您最常遇到的格式。

XLS 是 Excel 2003 及更早版本使用的舊二進制格式。 一些企業系統仍然輸出 XLS 格式,因此在與舊基礎設施整合時,可靠的支援此格式很重要。 IronXL 無需任何特殊配置即可讀取 XLS 文件。

XLSM 將具宏支援的功能擴展至 XLSX。 IronXL 能夠讀取來自 XLSM 文件的試算表資料,即使它不執行嵌入的 VBA 程式碼,這是伺服器端資料提取的正確行為。

CSV 和 TSV 是廣泛用於系統間資料交換的純文字表格格式。 WorkBook.LoadCSV 處理逗號分隔的文件,IronXL 返回相同的 WorkBook 物件,您的程式碼已知道如何導航,因此無論來源格式為何,您的資料讀取邏輯都保持一致。

當您打開 WorkBook.Load 時,IronXL 會自動從文件副檔名檢測文件格式。 在大多數情況下,您不需要明確指定格式,這簡化了必須處理來自多個來源的輸入的程式碼。

IronXL 支援的 Excel 文件格式
格式 擴展名 載入方法 註釋
開放 XML 活頁簿 .xlsx WorkBook.Load 預設現代格式
舊二進制格式 .xls WorkBook.Load Excel 2003 及更早版本
支持宏 .xlsm WorkBook.Load 資料讀取;不執行宏
逗號分隔 .csv WorkBook.LoadCSV 優化的 CSV 解析器
制表符分隔 .tsv WorkBook.Load 制表符分隔變體

如何載入和讀取 Excel 活頁簿?

WorkBook.Load 方法是所有基於文件的操作的進入點。 傳遞文件路徑後,IronXL 返回一個完全填充的活頁簿物件,您可以立即查詢:

using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
Imports IronXL

' Load the workbook; format is detected automatically
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")

' Access the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a single cell by A1 address
Dim companyName As String = sheet("A1").StringValue
Console.WriteLine($"Company: {companyName}")

' Access sheets by name or by zero-based index
Dim byName As WorkSheet = workbook.GetWorkSheet("Sales")
Dim byIndex As WorkSheet = workbook.WorkSheets(1)

' Load a password-protected file
Dim secured As WorkBook = WorkBook.Load("Confidential.xlsx", "p@ssw0rd")
$vbLabelText   $csharpLabel

DefaultWorkSheet 屬性返回第一張工作表,適用於大多數單張工作表文件。 當您的文件包含多張工作表時,GetWorkSheet 可按名稱檢索,WorkSheets[n] 可按零索引檢索。 WorkBook API 參考文件了活頁簿物件上的每個重載和屬性。

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 1 - 安裝

輸入

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 2 - Excel 範例輸入

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 3 - 主控台輸出


如何從 Excel 讀取型別化儲存格值?

在 IronXL 中,每個儲存格都公開型別化屬性,返回您所需精確型別的值——無需手動解析或轉型。 型別化屬性會自動處理來自基礎儲存格表示的強制轉型:

using IronXL;

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

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
using IronXL;

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

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
Imports IronXL

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

' Extract typed values from row 2
Dim employeeId As Integer = sheet("A2").IntValue
Dim name As String = sheet("B2").StringValue
Dim department As String = sheet("C2").StringValue
Dim salary As Decimal = sheet("D2").DecimalValue
Dim hireDate As DateTime = sheet("E2").DateTimeValue

Console.WriteLine($"ID:         {employeeId}")
Console.WriteLine($"Name:       {name}")
Console.WriteLine($"Department: {department}")
Console.WriteLine($"Salary:     {salary:C}")
Console.WriteLine($"Hired:      {hireDate:d}")

' Use the Text property for the formatted display value
Dim formattedSalary As String = sheet("D2").Text   ' "$75,000.00"
Dim formattedDate As String = sheet("E2").Text     ' "28/02/2026"

' Guard against empty cells before reading
If Not sheet("B3").IsEmpty Then
    Dim value As String = sheet("B3").StringValue
End If
$vbLabelText   $csharpLabel

Text 屬性返回與 Excel 中格式化一樣的顯示值——當您需要格式化數字字串而不是原始數字時特別有用。 對於包含 Excel 公式 的儲存格,IronXL 評估表達式並通過相同的型別化屬性返回計算結果。 附加值屬性——FloatValue——出現在 儲存格值參考中。


如何迭代 Excel 的行和列?

處理資料集中每條記錄需要逐行逐列迭代。 IronXL 的範圍語法直接映射到 Excel 的 A1 標記法,因此選擇儲存格區塊對於任何曾編寫試算表公式的人來說都很熟悉:

using IronXL;

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

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
using IronXL;

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

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
Imports IronXL

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

' Iterate a single column range
Console.WriteLine("Employee List:")
For Each cell In sheet("B2:B100")
    If Not String.IsNullOrEmpty(cell.Text) Then
        Console.WriteLine($"  - {cell.Text}")
    End If
Next

' Iterate all rows and all columns using the Rows property
For Each row In sheet.Rows
    For Each cell In row
        Console.Write(cell.Text.PadRight(15))
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

範圍 sheet["B2:B100"] 返回可列舉的儲存格物件集合。 檢查 string.IsNullOrEmpty 能夠優雅地跳過空行。 Rows 屬性——在 工作表資料範圍指南中有文件記錄——一次走訪工作表一行,公開每行的儲存格,而無需您事先知道欄數。

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 4 - Excel 行輸出


如何在 Excel 資料上運行集計計算?

IronXL 包含內建的 集計函式,直接在儲存格範圍內計算結果——無需手動累加迴圈:

using IronXL;

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

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
using IronXL;

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

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
Imports IronXL

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

' Built-in aggregate methods work on any named range
Dim total As Decimal = sheet("D2:D200").Sum()
Dim highest As Decimal = sheet("D2:D200").Max()
Dim lowest As Decimal = sheet("D2:D200").Min()
Dim average As Decimal = sheet("D2:D200").Avg()

Console.WriteLine($"Total Payroll:  {total:C}")
Console.WriteLine($"Highest Salary: {highest:C}")
Console.WriteLine($"Lowest Salary:  {lowest:C}")
Console.WriteLine($"Average Salary: {average:C}")

' Combine with LINQ for filtered aggregation
Dim itTotal As Decimal = sheet("D2:D200") _
    .Where(Function(c) sheet($"C{c.RowIndex}").StringValue = "IT") _
    .Sum(Function(c) c.DecimalValue)
Console.WriteLine($"IT Department Total: {itTotal:C}")
$vbLabelText   $csharpLabel

MaxAvg 自動跳過空儲存格並在背後處理數字轉換。 在範圍上連結 LINQ 查詢可為您提供篩選的集計結果——部門小計、日期範圍總和以及條件計數——都無需離開 IronXL API。


如何建立完整的員工資料讀取器?

以下範例將迄今為止覆蓋的所有內容組合成一個生產就緒的主控台應用程式,載入員工試算表、格式化每條記錄、累計工資總額、處理回寫並優雅地捕獲錯誤:

using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
Imports IronXL

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

    Console.WriteLine("=== Employee Data Report ===" & vbCrLf)

    Dim rowNumber As Integer = 2
    Dim totalSalary As Decimal = 0D
    Dim employeeCount As Integer = 0

    While Not String.IsNullOrEmpty(sheet($"A{rowNumber}").StringValue)
        Dim id As Integer = sheet($"A{rowNumber}").IntValue
        Dim name As String = sheet($"B{rowNumber}").StringValue
        Dim department As String = sheet($"C{rowNumber}").StringValue
        Dim salary As Decimal = sheet($"D{rowNumber}").DecimalValue

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}")

        totalSalary += salary
        employeeCount += 1
        rowNumber += 1
    End While

    Console.WriteLine(vbCrLf & $"Total Employees: {employeeCount}")
    Console.WriteLine($"Total Payroll:   {totalSalary:C}")

    ' Write a new record back to the sheet and save
    sheet("A10").Value = 1010
    sheet("B10").Value = "Jane Doe"
    sheet("C10").Value = "Finance"
    sheet("D10").Value = 75000
    workbook.SaveAs("Employees-Updated.xlsx")
Catch ex As Exception
    Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

while 迴圈在 A 欄變為空時終止,這使得讀取器能夠適應任何長度的試算表,而無需硬編碼行數。 寫回值與讀取使用相同的儲存格地址語法,並且 SaveAs 將更改保存到新文件,使原始文件保持不變。 try/catch 塊處理缺失文件、鎖定的活頁簿和損壞的資料——這些都是在生產環境中發生的外部來源到來的輸入文件的所有場景。

輸出

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 5 - 員工資料輸出

建立試算表的指南XLSX 轉換為 CSV 的指南展示了如何在端到端工作流中結合讀取和寫入。 儲存格樣式指南涵蓋了當格式化輸出是一種要求時的字體大小、顏色和邊框。

VB.NET 使用 IronXL 讀取 Excel 文件:無需 Microsoft Office 的分步指南:圖片 6 - Windows 表單輸出


如何處理進階的讀取場景?

在實際專案中會出現一些不常見但重要的場景。 命名範圍、工作表探索和 CSV 載入各自具有專門的 API 支援。

命名範圍使您能按邏輯標籤而不是儲存格地址來引用資料。 如果活頁簿作者定義了一個名為 SalaryTable 的命名範圍,則您可以直接通過 GetRangeByName 存取它:

var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
Dim range = workbook.GetRangeByName("SalaryTable")
Dim total As Decimal = range.Sum()
Console.WriteLine($"Named range total: {total:C}")
$vbLabelText   $csharpLabel

工作表探索可枚舉活頁簿中的每個工作表,在處理具有可變數量標籤的文件時非常有用:

foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
For Each ws As WorkSheet In workbook.WorkSheets
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}")
Next
$vbLabelText   $csharpLabel

CSV 載入使用專用方法,優化純文字文件,返回 WorkSheet,您可以使用相同的範圍 API 進行瀏覽:

WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
Dim csv As WorkBook = WorkBook.LoadCSV("data.csv")
Dim first As WorkSheet = csv.DefaultWorkSheet
Console.WriteLine(first("A1").StringValue)
$vbLabelText   $csharpLabel

這些模式涵蓋了出現在資料遷移專案、ETL 流程和自動化報告系統中的進階讀取場景。 有關完整的 API 表面,請參閱 IronXL 物件參考

其他權威參考:


您接下來的步驟是什麼?

IronXL 將 Excel 文件讀取從充滿相依的 Interop 挑戰轉化為幾行簡單的 C# 程式碼。 載入活頁簿、提取型別化值、逐行迭代、運行集計計算和處理邊緣案例都遵循相同的一致 API 模式——在您的部署環境中無需安裝 Microsoft Office。

從教學轉移到生產:

  1. 開始免費試用以解鎖完整的 IronXL 功能集,並在承諾購買授權之前對您的 Excel 文件進行驗證。
  2. 瀏覽 完整的 IronXL 文件以獲取編寫、格式化、樣式和轉換試算表的指南。
  3. 探索 物件參考和完整的 API以發現程式庫中可用的每個類、方法和屬性。
  4. 當您的工作流程需要生成輸出文件以及讀取輸入文件時,查看 建立試算表的指南
  5. 查看 IronXL 部落格文章索引以獲取其他教程,涵蓋如報告生成、資料驗證和多表合併等實際場景。

常見問題

什麼是IronXL?

IronXL是一個.NET程式庫,允許開發者讀取、編輯和建立各種格式的Excel文件如XLSX和XLS,無需安裝Microsoft Office。

您如何使用IronXL在C#中讀取Excel文件?

調用WorkBook.Load及文件路徑以打開工作簿,然後使用A1標示法和型別屬性如StringValue、IntValue和DecimalValue存取單元格。

為何選擇IronXL而非Microsoft Office Interop來讀取Excel文件?

IronXL不需要安裝Microsoft Office,消除了COM依賴,簡化了伺服器部署。

IronXL可以讀取哪些Excel文件格式?

IronXL可讀取XLSX、XLS、XLSM、CSV及TSV格式。格式檢測基於文件擴展名自動完成。

IronXL能有效處理大型Excel文件嗎?

是的,IronXL針對性能優化並可處理大量Excel文件,適合資料密集型應用。

IronXL相容.NET 10嗎?

是的,IronXL支持現代.NET版本,包括.NET 10以及.NET Framework專案。

如何使用IronXL運行聚合計算?

在任意單元格範圍上使用內建的Sum、Min、Max和Avg方法,這些方法會自動跳過空單元格。

IronXL能讀取受密碼保護的Excel文件嗎?

可以,將密碼作為第二個參數傳給WorkBook.Load:WorkBook.Load("file.xlsx", "password")。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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