跳過到頁腳內容
使用 IRONXL

如何使用 IronXL 在 C# 中將 DataGridView 匯出到 Excel

使用IronXL時,將資料從 DataGridView 匯出到 Excel 檔案只需要幾行 C# 程式碼。 建立一個 WorkBook,遍歷網格的列和行,將每個單元格的值寫入工作表,然後呼叫 SaveAs 產生一個完全格式化的 .xlsx 檔案 -- 無需安裝 Microsoft Office。

如何設定 Windows Forms 專案以進行 Excel 匯出?

Windows Forms 是 .NET 生態系統中基礎的 GUI 函式庫,廣泛用於建置桌面應用程式。 DataGridView 控制項是其最常用的元件之一:它可以顯示、編輯和管理來自任何可綁定來源(例如 DataTable、資料庫查詢結果或記憶體清單)的表格資料。

將該網格資料匯出至 Excel 可滿足多種日常需求——例如向利害關係人發送報告、為稽核目的存檔快照,或將資料饋送至下游分析工具。 傳統上主要有兩種方法:Microsoft Office Interop 以及第三方函式庫。 Interop 要求每台執行該應用程式的電腦都必須安裝 Excel,這會引發 COM 物件生命週期問題,且在伺服器或雲端部署環境中表現不佳。 IronXL、ClosedXML 和 Syncfusion 等函式庫透過直接寫入 Open XML 檔案格式,且不依賴任何 Office 元件,從而避免了這些問題。

本指南以 C# 語言示範 IronXL 針對 .NET 10 的應用方式,儘管 IronXL 亦支援 .NET Framework 4.6.2 及所有現代 .NET 版本

先決條件

在編寫任何匯出程式碼之前,請確認以下事項已就緒:

  • Visual Studio 2022 或更新版本 已安裝 .NET 10 SDK
  • 一個包含 DataGridView 控制項的 Windows 窗體應用程式項目
  • 透過 NuGet 存取來安裝 IronXL

如何安裝 IronXL?

在 Visual Studio 中開啟套件管理員主控台,並執行以下任一指令:

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

或者,在解決方案資源管理器中右鍵單擊項目,選擇"管理 NuGet 套件" ,搜尋 IronXL.Excel,然後按"安裝"

Export DataGridView to Excel in VB .NET 2010 Using IronXL: Image 1 - Installation

安裝完成後,請在使用 Excel 功能的任何檔案頂端加入 IronXL 的 using 指令:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

IronXL 支援所有常見的試算表格式:XLSX、XLS、CSV 及 TSV。 本指南全程採用 XLSX 格式,因其為現代 Excel 版本的預設格式。

如何將範例資料填入 DataGridView?

在本演練中,表單包含一個名為 DataGridViewDataGridView1 和一個名為 btnExport 的按鈕。 表格在表單的 Load 事件中填充,員工記錄儲存在 DataTable 中:

void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
    var dt = new DataTable();

    // Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", typeof(int));
    dt.Columns.Add("Name", typeof(string));
    dt.Columns.Add("Department", typeof(string));
    dt.Columns.Add("Salary", typeof(decimal));

    // Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);

    DataGridView1.DataSource = dt;
}
Option Strict On



Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim dt As New DataTable()

    ' Define columns with the appropriate .NET type
    dt.Columns.Add("EmployeeID", GetType(Integer))
    dt.Columns.Add("Name", GetType(String))
    dt.Columns.Add("Department", GetType(String))
    dt.Columns.Add("Salary", GetType(Decimal))

    ' Add sample rows
    dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000D)
    dt.Rows.Add(102, "Michael Chen", "Marketing", 72000D)
    dt.Rows.Add(103, "Emily Davis", "Finance", 91000D)
    dt.Rows.Add(104, "James Wilson", "Engineering", 78000D)

    DataGridView1.DataSource = dt
End Sub
$vbLabelText   $csharpLabel

每欄皆定義為特定的 .NET 類型,以確保後續的數值比較與格式化能正確運作。 DataSource 屬性將 DataTable 直接綁定至 DataGridView,表單開啟時,網格會自動呈現所有行。 在實際運作中,此類資料通常來自資料庫查詢、ORM 結果集或 REST API 回應,而非硬編碼的值。

Export DataGridView to Excel in VB .NET 2010 Using IronXL: Image 2 - DataGridView Output

理解 DataGridView 資料模型

DataGridView 透過兩個集合公開其內容:Columns(用於元數據,例如 HeaderText 和列索引)和 Rows(用於實際資料單元格)。 每個 DataGridViewRow 包含一個按列位置索引的 Cells 集合。 每個單元格的 Value 屬性返回一個裝箱對象,必須先將其強制轉換或轉換,然後才能將其寫入 Excel 單元格。 理解此層級結構對於撰寫可靠的匯出迴圈至關重要。

DataTable 在背景儲存輸入值,因此十進制工資在寫入 IronXL 工作表之前不需要字串轉換。 IronXL 的 SetCellValue 方法接受 stringdoubledecimalintSolutionNameint@@@--CODE-9-816@CO重載,允許您在輸出檔案中保留原始資料類型。

如何將 DataGridView 中的資料連同欄位標題匯出至 Excel 檔案?

匯出邏輯位於按鈕的點擊處理程序中。 程式碼建立一個新的工作表,檢索預設工作表,將列標題寫入第一行,然後將每一行資料寫入列標題下方:

void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
void btnExport_Click(object sender, EventArgs e)
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers to row index 0
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Write data rows starting at row index 1
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is not null)
            {
                sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
            }
        }
    }

    string outputPath = "EmployeeData.xlsx";
    workbook.SaveAs(outputPath);
    MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
Private Sub btnExport_Click(sender As Object, e As EventArgs)
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    ' Write column headers to row index 0
    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    ' Write data rows starting at row index 1
    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
            If cellValue IsNot Nothing Then
                sheet.SetCellValue(row + 1, col, cellValue.ToString())
            End If
        Next
    Next

    Dim outputPath As String = "EmployeeData.xlsx"
    workbook.SaveAs(outputPath)
    MessageBox.Show("Export complete. File saved to: " & outputPath, "Success")
End Sub
$vbLabelText   $csharpLabel

WorkBook 物件代表記憶體中的整個 Excel 檔案。 DefaultWorkSheet 傳回第一個工作表,而無需您明確建立工作表。 外層循環將 HeaderText 中的標題文字寫入第 0 行。 接著,嵌套迴圈會遍歷每一筆資料,在將儲存格值轉換為字串之前,先檢查該值是否為 null。 row + 1 偏移量將資料移到標題行下方。 SaveAs 將完成的工作簿以Open XML XLSX 檔案的形式寫入指定路徑。

Export DataGridView to Excel in VB .NET 2010 Using IronXL: Image 3 - Excel Output

生成的檔案可在 Excel、Google 試算表或任何支援 XLSX 格式的應用程式中開啟。 列標題出現在第一行,所有資料行都按照它們在 DataGridView 中出現的順序排列。

如何對匯出的 Excel 檔案套用儲存格格式?

純文字資料匯出雖具功能性,但尚未達到可直接展示的標準。 IronXL 的樣式 API 讓您能在儲存前,將粗體字型、背景顏色、文字顏色及數字格式套用至任何儲存格範圍:

void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
void ExportWithFormatting()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    // Write column headers
    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    // Style the header row: bold white text on blue background
    var headerRange = sheet.GetRange("A1:D1");
    headerRange.Style.Font.Bold = true;
    headerRange.Style.SetBackgroundColor("#4472C4");
    headerRange.Style.Font.SetColor("#FFFFFF");

    // Locate the Salary column index
    int salaryColIndex = -1;
    for (int i = 0; i < DataGridView1.Columns.Count; i++)
    {
        if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
            StringComparison.OrdinalIgnoreCase))
        {
            salaryColIndex = i;
            break;
        }
    }

    // Write data rows, preserving numeric types
    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
            if (cellValue is null) continue;

            int targetRow = row + 1;

            if (col == salaryColIndex)
            {
                // Write salary as a true numeric decimal
                if (decimal.TryParse(cellValue.ToString(),
                    System.Globalization.NumberStyles.Number,
                    System.Globalization.CultureInfo.InvariantCulture,
                    out decimal decValue))
                {
                    sheet.SetCellValue(targetRow, col, decValue);
                }
                else
                {
                    sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
                }
            }
            else
            {
                sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
            }
        }
    }

    // Apply currency format to the salary column data range
    var salaryRange = sheet.GetRange("D2:D5");
    salaryRange.FormatString = "$#,##0";

    workbook.SaveAs("FormattedEmployeeData.xlsx");
}
Option Strict On



Sub ExportWithFormatting()
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    ' Write column headers
    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    ' Style the header row: bold white text on blue background
    Dim headerRange = sheet.GetRange("A1:D1")
    headerRange.Style.Font.Bold = True
    headerRange.Style.SetBackgroundColor("#4472C4")
    headerRange.Style.Font.SetColor("#FFFFFF")

    ' Locate the Salary column index
    Dim salaryColIndex As Integer = -1
    For i As Integer = 0 To DataGridView1.Columns.Count - 1
        If String.Equals(DataGridView1.Columns(i).HeaderText, "Salary", StringComparison.OrdinalIgnoreCase) Then
            salaryColIndex = i
            Exit For
        End If
    Next

    ' Write data rows, preserving numeric types
    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        If DataGridView1.Rows(row).IsNewRow Then Continue For

        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
            If cellValue Is Nothing Then Continue For

            Dim targetRow As Integer = row + 1

            If col = salaryColIndex Then
                ' Write salary as a true numeric decimal
                Dim decValue As Decimal
                If Decimal.TryParse(cellValue.ToString(), Globalization.NumberStyles.Number, Globalization.CultureInfo.InvariantCulture, decValue) Then
                    sheet.SetCellValue(targetRow, col, decValue)
                Else
                    sheet.SetCellValue(targetRow, col, cellValue.ToString())
                End If
            Else
                sheet.SetCellValue(targetRow, col, cellValue.ToString())
            End If
        Next
    Next

    ' Apply currency format to the salary column data range
    Dim salaryRange = sheet.GetRange("D2:D5")
    salaryRange.FormatString = "$#,##0"

    workbook.SaveAs("FormattedEmployeeData.xlsx")
End Sub
$vbLabelText   $csharpLabel

GetRange 方法接受標準 Excel 表示法 (A1:D1) 來選擇連續的單元格區塊。 設定 Style.Font.BoldStyle.SetBackgroundColorStyle.Font.SetColor 會將這些格式套用於所選範圍內的每個儲存格。 對於數值列,將值寫入 decimal 而不是字串可以保持資料類型不變,這表示 Excel 可以正確應用數字格式,例如 $#,##0。 以字串形式儲存的儲存格不會響應數字格式代碼。

Export DataGridView to Excel in VB .NET 2010 Using IronXL: Image 4 - Formatted Excel Output.

您可參考 IronXL 樣式文件,將此範例延伸應用於交錯行陰影、欄位寬度自動調整或凍結窗格等功能。

如何將 DataGridView 中的資料匯出為 CSV 而非 XLSX?

某些工作流程需要 CSV 輸出,以確保與舊系統或輕量級資料管道的相容性。 IronXL 無需對主程式碼進行任何額外配置變更,即可處理 CSV 匯出:

void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
void ExportToCsv()
{
    var workbook = WorkBook.Create();
    var sheet = workbook.DefaultWorkSheet;

    for (int col = 0; col < DataGridView1.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
    }

    for (int row = 0; row < DataGridView1.Rows.Count; row++)
    {
        if (DataGridView1.Rows[row].IsNewRow) continue;

        for (int col = 0; col < DataGridView1.Columns.Count; col++)
        {
            object? cell = DataGridView1.Rows[row].Cells[col].Value;
            if (cell is not null)
                sheet.SetCellValue(row + 1, col, cell.ToString()!);
        }
    }

    // Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv");
}
Sub ExportToCsv()
    Dim workbook = WorkBook.Create()
    Dim sheet = workbook.DefaultWorkSheet

    For col As Integer = 0 To DataGridView1.Columns.Count - 1
        sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
    Next

    For row As Integer = 0 To DataGridView1.Rows.Count - 1
        If DataGridView1.Rows(row).IsNewRow Then Continue For

        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            Dim cell As Object = DataGridView1.Rows(row).Cells(col).Value
            If cell IsNot Nothing Then
                sheet.SetCellValue(row + 1, col, cell.ToString())
            End If
        Next
    Next

    ' Saving with a .csv extension produces a comma-separated file
    workbook.SaveAs("EmployeeData.csv")
End Sub
$vbLabelText   $csharpLabel

與 XLSX 匯出相比,唯一的變更是傳遞給 SaveAs 的檔案副檔名。 IronXL 會自動偵測副檔名,並將工作簿序列化為正確的格式。 這種一致性意味著,無論輸出格式為何,您的資料寫入邏輯都保持不變——這相較於那些需要為每種格式分別編寫程式路徑的函式庫,是一項顯著優勢。

當下游使用者是 Python pandas 腳本、資料庫批量匯入工具,或是無法讀取二進位 XLSX 檔案的分析平台時,CSV 匯出功能特別實用。

如何高效處理大型 DataGridView 資料集?

對於包含數萬行的資料表,效能便成為需要考量的因素。 以下模式透過單次迭代建構完整資料集,從而減輕記憶體壓力:

IronXL 針對大型資料集的匯出方法比較
方法 已處理的列 辦公室要求 保留原文格式
Microsoft.Office.Interop.Excel 最多 ~65k (慢速) 部分
IronXL (字串儲存格) 100 萬多行 無 (所有文字)
IronXL(帶資料型的儲存格) 100 萬多行
IronXL 從 DataTable 100 萬多行 是 (自動)

DataGridView 綁定至 DataTable 時,您可以使用WorkSheet.LoadDataTable方法直接將表格載入到 IronXL 中,完全繞過逐個儲存格的迭代。 此方法速度更快,並能自動保留所有欄位類型。

對於沒有 DataTable 支援的網格,前面所示的逐個單元格模式仍然是標準方法。 如果您需要非同步導出以在大型導出期間保持 UI 的響應性,請將導出邏輯包裝在 Task.Run 呼叫中,並在後台執行緒上 await 結果。 請參閱非同步檔案操作文件,了解將結果傳回 UI 執行緒的模式。

為何 IronXL 在 DataGridView 匯出功能上優於 Office Interop?

傳統的 .NET 解決方案使用 Microsoft.Office.Interop.Excel 來驅動正在執行的 Excel 流程。 這種做法會引發若干部署與可靠性問題:

  • 每台執行此應用程式的電腦都必須安裝已取得授權的 Microsoft Excel 版本
  • 伺服器環境和雲端容器通常無法安裝 Office
  • COM 互通需要明確釋放每個物件,以避免記憶體洩漏和 Excel 僵屍程序
  • 跨 COM 邊界的錯誤處理既繁瑣又脆弱
  • 隨著資料列數量增加,效能會迅速下降

IronXL 會直接寫入 OOXML 檔案格式,無需啟動任何外部程序。 應用程式以獨立單元形式部署。 該庫的 API 是完全託管的 .NET,因此垃圾回收會自動處理內存,而無需 Marshal.ReleaseComObject 呼叫。 由於不涉及進程間通訊,執行速度大幅提升。

對於正在評估替代方案的團隊而言,ClosedXML 是一個廣受歡迎的開源選項。 IronXL 提供更廣泛的功能集,包括 PDF 轉換圖表生成及商業支援,這些可能是企業採購決策的考量因素。 請檢視 IronXL授權方案,選擇符合您團隊規模與部署情境的合適方案。

功能比較:IronXL 與 Office Interop
特點 IronXL Office Interop
需安裝辦公室軟體
伺服器/雲端部署 否(不支援)
受管記憶體模型 不需要(需進行 COM 清理)
XLSX / CSV / XLS 格式 這三項 取決於已安裝的 Excel
從試算表匯出 PDF 需要額外的函式庫

IronXL 教學單元涵蓋讀取現有 Excel 檔案、修改範本、生成圖表以及套用條件格式化——這些功能皆自然延伸自此處展示的 DataGridView 匯出模式。

下一步計劃是什麼?

現在您擁有可以使用 IronXL 將 DataGridView 匯出到格式化 Excel 檔案的工作 C# 程式碼。 在此基礎上,請參考以下要點:

-新增錯誤處理:將匯出程式碼包裹在 try/catch 程式碼區塊中,並在檔案被鎖定或路徑無效時顯示使用者友善的訊息。 -支援檔案路徑選擇:使用 SaveFileDialog 允許使用者在執行時選擇輸出位置和檔案名稱。 -載入真實資料:將範例程式碼 DataTable 替換為使用ADO.NET或 Entity Framework 的資料庫查詢。

  • 讀取現有檔案:使用 WorkBook.Load 開啟現有的試算表並進行更新,而非總是建立新的試算表 -匯出到多個工作表:在同一個工作表中建立額外的 WorkSheet 對象,以組織相關資料集
  • 套用條件格式:使用 IronXL 的條件格式 API 標示超過閾值的儲存格
  • 檢視授權選項:提供免費試用授權; 授權層級涵蓋從個人開發者到Enterprise部署
  • 瀏覽完整的 API 參考文件IronXL 物件參考文件詳述了所有可用的類別與方法

常見問題解答

在 C# 中,將 DataGridView 資料匯出至 Excel 的最簡單方法是什麼?

使用 IronXL,您可以在 C# 中透過一個簡短的迴圈,將 DataGridView 資料匯出至 Excel:該迴圈會將欄位標題和資料列寫入 WorkBook 物件,然後呼叫 SaveAs 來產生 XLSX 檔案。無需安裝 Microsoft Office。

如何在 C# Windows Forms 應用程式中使用 IronXL 處理 Excel 檔案?

透過 NuGet 安裝 IronXL,加入 using IronXL 指令,使用 WorkBook.Create() 建立工作簿,透過 SetCellValue 寫入資料,並使用 SaveAs 儲存。IronXL 支援 XLSX、XLS 及 CSV 格式。

IronXL.Excel 是否支援匯出大型 DataGridView 資料集至 Excel?

是的,IronXL 能高效處理大型資料集。對於以 DataTable 為後端的 DataGridView,您可以使用 LoadDataTable 方法,避免逐格迭代,從而獲得更佳的效能。

使用 IronXL 是否需要安裝 Microsoft Excel?

不。IronXL 會直接寫入 Open XML 檔案格式,無需啟動 Excel 或任何 COM 自動化。使用 IronXL 建置的應用程式會部署至無法使用 Office 的伺服器及雲端環境。

相較於 Office Interop,使用 IronXL 進行 Excel 匯出有哪些優勢?

IronXL 無需安裝 Office,可避免 COM 記憶體洩漏問題,支援伺服器與雲端部署,並提供簡潔的受管 .NET API,用於讀寫 XLSX、XLS 和 CSV 檔案。

IronXL 能否將 DataGridView 資料匯出為 CSV 及 XLSX 格式?

是的。將 .csv 檔案路徑傳遞給 WorkBook.SaveAs 會產生逗號分隔的檔案。兩種格式的資料寫入程式碼完全相同——僅檔案副檔名有所不同。

如何使用 IronXL 為匯出的 Excel 儲存格套用格式?

使用 WorkSheet.GetRange 選取儲存格範圍,接著透過 Style 屬性設定 Font.Bold、SetBackgroundColor、Font.SetColor,以及用於數字格式的 FormatString。

如何在 C# 專案中開始使用 IronXL?

在您的專案中執行 `Install-Package IronXL` 或 `dotnet add package IronXL`,於檔案頂端加入 `using IronXL`,並參照 ironsoftware.com/csharp/excel/ 上的 IronXL 文件範例操作。

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

鋼鐵支援團隊

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