跳過到頁腳內容
使用 IRONXL

如何使用IronXL在C#中將GridView匯出為Excel XLSX。

將ASP.NET GridView 中的資料匯出到 Excel 文件

您可以透過安裝IronXL ,建立一個 WorkBook,遍歷 GridView 行,將每個儲存格值寫入對應的工作表位置,並將工作簿儲存到磁碟或 HTTP 回應流,從而在 C# 中將ASP.NET GridView 匯出到 Excel XLSX 檔案。 這種方法不需要在伺服器上安裝 Microsoft Office,並且可以在.NET Framework、 .NET Core和.NET 5 到.NET 10 Web 應用程式中可靠地運行。

在企業級ASP.NET Web Forms 專案中,將 GridView 資料匯出到 Excel 是一個標準需求。 使用者需要將表格資料​​從瀏覽器匯出到電子表格中,以便進行報告、離線分析和存檔。 挑戰在於彌合伺服器端 GridView 控制項與結構正確的 .xlsx 檔案之間的差距,而不引入在 Web 伺服器環境中會破壞的 Office Interop 依賴項。

本指南將逐步引導您了解三種更豐富的匯出模式:最小的逐行匯出、帶有列自動調整大小的標題加資料匯出,以及完全繞過渲染 HTML 的 DataTable 驅動匯出。 每個範例都使用與 C# 頂級語句相容的程式碼和IronXL API。

如何在ASP.NET專案中安裝IronXL ?

在 Visual Studio 中開啟程式包管理器控制台並執行:

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

或者,在解決方案資源管理器中以滑鼠右鍵按一下項目,選擇"管理NuGet套件" ,搜尋 IronXL,然後按一下"安裝" 。 NuGet會自動解析所有傳遞相依性。

安裝完軟體包後,請將以下 using 指令加入您的程式碼隱藏檔案:

using System;
using System.Data;
using System.Web.UI;
using IronXL;
using System;
using System.Data;
using System.Web.UI;
using IronXL;
$vbLabelText   $csharpLabel

IronXL支援.NET Framework 4.6.2 及更高版本,以及.NET Core 3.1 和.NET 5 至.NET 10。伺服器上無需安裝 Office 或進行 COM 註冊。 完整的 API 文件可在IronXL物件參考中找到。

應該使用哪個NuGet套件 ID?

正確的套件 ID 是 IronXL(而非 IronXl.Excel,後者是舊別名)。 安裝完成後,程式集 IronXL.dll 將會自動引用。 您可以透過檢查解決方案資源管理器中的Packages節點或從專案目錄執行 dotnet list package 來驗證已安裝的版本。

IronXL能在ASP.NET Core Web 應用程式中運作嗎?

是的。 同一個 API 既適用於ASP.NET Web Forms 項目,也適用於ASP.NET Core (MVC 或Razor Pages)項目。 在核心專案中,建置伺服器端檔案路徑時,將 Server.MapPath 替換為 IWebHostEnvironment.WebRootPathPath.Combine(Directory.GetCurrentDirectory(), "Exports")

如何將 GridView 匯出到 Excel 檔案?

最簡單的匯出模式是遍歷 GridView 中渲染的每一行,並將每個儲存格的文字複製到對應的 Excel 工作表儲存格。 在 ASPX 標記中,新增一個 <asp:GridView ID="gvEmployees" runat="server" AutoGenerateColumns="true" /> 控制項和一個 <asp:Button ID="btnExport" runat="server" Text="Export to Excel" OnClick="btnExport_Click" /> 按鈕。 runat="server" 屬性使兩個控制項都可以在程式碼隱藏中存取。

後台程式碼在首次載入時綁定範例數據,並在按鈕點擊時匯出:

using System;
using System.Data;
using System.Web.UI;
using IronXL;

public partial class GridViewExport : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridView();
        }
    }

    private void BindGridView()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("EmployeeID", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Department", typeof(string));
        dt.Columns.Add("Salary", typeof(decimal));

        dt.Rows.Add(1, "John Smith", "Engineering", 75000);
        dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
        dt.Rows.Add(3, "Michael Chen", "Finance", 70000);

        ViewState["EmployeeData"] = dt;
        gvEmployees.DataSource = dt;
        gvEmployees.DataBind();
    }

    protected void btnExport_Click(object sender, EventArgs e)
    {
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        // Write header row
        for (int j = 0; j < gvEmployees.HeaderRow.Cells.Count; j++)
        {
            worksheet.SetCellValue(0, j, gvEmployees.HeaderRow.Cells[j].Text);
        }

        // Write data rows
        for (int i = 0; i < gvEmployees.Rows.Count; i++)
        {
            for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
            }
        }

        string filePath = Server.MapPath("~/Exports/EmployeeData.xlsx");
        workbook.SaveAs(filePath);
    }
}
using System;
using System.Data;
using System.Web.UI;
using IronXL;

public partial class GridViewExport : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridView();
        }
    }

    private void BindGridView()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("EmployeeID", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Department", typeof(string));
        dt.Columns.Add("Salary", typeof(decimal));

        dt.Rows.Add(1, "John Smith", "Engineering", 75000);
        dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
        dt.Rows.Add(3, "Michael Chen", "Finance", 70000);

        ViewState["EmployeeData"] = dt;
        gvEmployees.DataSource = dt;
        gvEmployees.DataBind();
    }

    protected void btnExport_Click(object sender, EventArgs e)
    {
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        // Write header row
        for (int j = 0; j < gvEmployees.HeaderRow.Cells.Count; j++)
        {
            worksheet.SetCellValue(0, j, gvEmployees.HeaderRow.Cells[j].Text);
        }

        // Write data rows
        for (int i = 0; i < gvEmployees.Rows.Count; i++)
        {
            for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
            {
                worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
            }
        }

        string filePath = Server.MapPath("~/Exports/EmployeeData.xlsx");
        workbook.SaveAs(filePath);
    }
}
$vbLabelText   $csharpLabel

WorkBook.Create(ExcelFileFormat.XLSX) 呼叫初始化一個面向現代 Open XML 格式的記憶體工作簿。 CreateWorkSheet("Employees") 新增第一張工作表。 外層循環(i)遍歷資料行; 內部循環(j)遍歷列。 行索引 i + 1 用於資料儲存格,這樣就不會覆寫第 0 行的標題。

為什麼要使用IronXL而不是 Excel Interop?

Excel Interop需要在伺服器上安裝正版 Microsoft Excel,並且會建立 COM 對象,這些對象必須明確釋放以避免記憶體洩漏。 IronXL直接以 Open XML 套件的形式讀取和寫入 .xlsx 檔案 -- 無需 COM、無需 Office、無需 Marshal.ReleaseComObject 樣板程式碼。 這使得它在 IIS、Azure 應用服務、Docker 和其他 Office 不可用的伺服器環境中也能可靠運作。

XLSX 下載的正確 MIME 類型是什麼?

如果您希望瀏覽器彈出檔案儲存對話方塊而不是直接提供位元組,請將回應內容類型設定為 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,並在將工作簿位元組寫入回應流之前新增 Content-Disposition: attachment 標頭。

如何新增列標題和自動調整列寬?

基本範例會寫入從 HeaderRow.Cells 中提取的標題,但生產匯出也應自動調整每個欄位的大小,以便在 Excel 中無需手動調整即可閱讀資料:

protected void btnExport_Click(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

    // Write column headers
    int colCount = gvEmployees.HeaderRow.Cells.Count;
    for (int i = 0; i < colCount; i++)
    {
        string header = gvEmployees.HeaderRow.Cells[i].Text;
        worksheet.SetCellValue(0, i, header);
    }

    // Write data rows
    for (int i = 0; i < gvEmployees.Rows.Count; i++)
    {
        for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
        }
    }

    // Auto-size each column for readability
    for (int col = 0; col < colCount; col++)
    {
        worksheet.AutoSizeColumn(col);
    }

    string filePath = Server.MapPath("~/Exports/EmployeeReport.xlsx");
    workbook.SaveAs(filePath);
}
protected void btnExport_Click(object sender, EventArgs e)
{
    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

    // Write column headers
    int colCount = gvEmployees.HeaderRow.Cells.Count;
    for (int i = 0; i < colCount; i++)
    {
        string header = gvEmployees.HeaderRow.Cells[i].Text;
        worksheet.SetCellValue(0, i, header);
    }

    // Write data rows
    for (int i = 0; i < gvEmployees.Rows.Count; i++)
    {
        for (int j = 0; j < gvEmployees.Rows[i].Cells.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, gvEmployees.Rows[i].Cells[j].Text);
        }
    }

    // Auto-size each column for readability
    for (int col = 0; col < colCount; col++)
    {
        worksheet.AutoSizeColumn(col);
    }

    string filePath = Server.MapPath("~/Exports/EmployeeReport.xlsx");
    workbook.SaveAs(filePath);
}
$vbLabelText   $csharpLabel

AutoSizeColumn(col) 指示IronXL根據儲存格內容長度計算最佳列寬,與 Excel 桌面應用程式中的"格式">"自動調整列寬"操作類似。 在寫入所有資料後循環調用它比在每一行之後調用它效率更高,因為此時最終內容已經知道。

如需更多樣式選項(例如粗體標題、背景顏色、數字格式),請瀏覽IronXL單元格樣式教學。 您也可以合併儲存格,建立跨越多列的報表標題。

如何將粗體格式應用於表頭單元格?

使用 worksheet["A1"].Style 傳回的 IStyle 物件(或範圍)。 在寫入值之前或之後設定 Font.Bold = true -- 樣式與儲存格內容解耦:

// Bold the entire header row (columns A through D)
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.FontColor = "#FFFFFF";
// Bold the entire header row (columns A through D)
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.FontColor = "#FFFFFF";
$vbLabelText   $csharpLabel

此模式統一適用於任何大小的範圍。有關樣式屬性的完整列表,請參閱IronXL樣式 API 參考文件

如何直接從數據表匯出資料?

遍歷已渲染的 GridView 行會將匯出與控制項的目前視覺狀態綁定,而該狀態可能會受到分頁、排序​​和列可見性設定的影響。 從儲存在 ViewState 中的底層 DataTable 匯出數據,無論網格如何配置,都會產生確定性的結果:

protected void btnExport_Click(object sender, EventArgs e)
{
    DataTable sourceData = ViewState["EmployeeData"] as DataTable;
    if (sourceData == null)
    {
        Response.Write("No data available to export.");
        return;
    }

    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Report");

    // Column headers from DataTable schema
    for (int i = 0; i < sourceData.Columns.Count; i++)
    {
        worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);
    }

    // Data rows from DataRow objects
    for (int i = 0; i < sourceData.Rows.Count; i++)
    {
        for (int j = 0; j < sourceData.Columns.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());
        }
    }

    string filePath = Server.MapPath("~/Exports/DataExport.xlsx");
    workbook.SaveAs(filePath);
}
protected void btnExport_Click(object sender, EventArgs e)
{
    DataTable sourceData = ViewState["EmployeeData"] as DataTable;
    if (sourceData == null)
    {
        Response.Write("No data available to export.");
        return;
    }

    WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet worksheet = workbook.CreateWorkSheet("Report");

    // Column headers from DataTable schema
    for (int i = 0; i < sourceData.Columns.Count; i++)
    {
        worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);
    }

    // Data rows from DataRow objects
    for (int i = 0; i < sourceData.Rows.Count; i++)
    {
        for (int j = 0; j < sourceData.Columns.Count; j++)
        {
            worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());
        }
    }

    string filePath = Server.MapPath("~/Exports/DataExport.xlsx");
    workbook.SaveAs(filePath);
}
$vbLabelText   $csharpLabel

列名來自 DataTable.Columns[i].ColumnName,它反映了原始資料架構,而不是在 GridView 模板中應用的任何顯示名稱覆蓋。 使用列索引從 DataRow 物件中擷取儲存格值,並將每個值轉換為 string 以滿足 SetCellValue

GridView 使用分頁時,此模式尤其有價值-迭代 gvEmployees.Rows 只會傳回目前可見頁上的行,而從完整的 DataTable 讀取則會匯出每筆記錄。

匯出大型資料表會發生什麼情況?

IronXL可以有效率地傳輸大型 Excel 資料集的工作簿資料。 對於超過 10 萬行的匯出操作,請考慮在單一工作表操作中批次執行 SetCellValue 調用,而不是在巢狀循環中設定單一儲存格。您也可以將工作簿寫入 MemoryStream,然後將其增量刷新到 Response 流中,以避免將整個文件保存在伺服器 RAM 中。

導出過程中如何處理錯誤?

生產導出處理程序應將IronXL操作包裝在 catch 區塊中,並在出現問題時向使用者傳回描述性訊息。 常見故障模式包括缺少 ~/Exports/ 目錄、檔案權限錯誤以及會話逾時後 ViewState 為空:

protected void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable sourceData = ViewState["EmployeeData"] as DataTable;
        if (sourceData == null)
            throw new InvalidOperationException("Session data has expired. Please reload the page.");

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        for (int i = 0; i < sourceData.Columns.Count; i++)
            worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);

        for (int i = 0; i < sourceData.Rows.Count; i++)
            for (int j = 0; j < sourceData.Columns.Count; j++)
                worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());

        string filePath = Server.MapPath("~/Exports/SafeExport.xlsx");
        workbook.SaveAs(filePath);

        lblStatus.Text = "Export successful. File saved to server.";
    }
    catch (Exception ex)
    {
        lblStatus.Text = $"Export failed: {ex.Message}";
    }
}
protected void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable sourceData = ViewState["EmployeeData"] as DataTable;
        if (sourceData == null)
            throw new InvalidOperationException("Session data has expired. Please reload the page.");

        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Employees");

        for (int i = 0; i < sourceData.Columns.Count; i++)
            worksheet.SetCellValue(0, i, sourceData.Columns[i].ColumnName);

        for (int i = 0; i < sourceData.Rows.Count; i++)
            for (int j = 0; j < sourceData.Columns.Count; j++)
                worksheet.SetCellValue(i + 1, j, sourceData.Rows[i][j].ToString());

        string filePath = Server.MapPath("~/Exports/SafeExport.xlsx");
        workbook.SaveAs(filePath);

        lblStatus.Text = "Export successful. File saved to server.";
    }
    catch (Exception ex)
    {
        lblStatus.Text = $"Export failed: {ex.Message}";
    }
}
$vbLabelText   $csharpLabel

對於將文件作為直接瀏覽器下載而不是保存到磁碟來提供的 Web 應用程序,請在設置 content-type 和 disposition 標頭後使用 Response.BinaryWrite 或寫入 Response.OutputStream。 確保 ~/Exports/ 目錄存在,並且 IIS 應用程式集區識別對該目錄具有寫入權限。

如何將 XLSX 檔案作為瀏覽器下載發送?

workbook.SaveAs(filePath) 替換為基於流的回應:

using System.IO;

// ... inside btnExport_Click after populating the worksheet ...

byte[] fileBytes;
using (MemoryStream ms = new MemoryStream())
{
    workbook.SaveAs(ms);
    fileBytes = ms.ToArray();
}

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment; filename=EmployeeData.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();
using System.IO;

// ... inside btnExport_Click after populating the worksheet ...

byte[] fileBytes;
using (MemoryStream ms = new MemoryStream())
{
    workbook.SaveAs(ms);
    fileBytes = ms.ToArray();
}

Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment; filename=EmployeeData.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();
$vbLabelText   $csharpLabel

這種模式避免了將臨時檔案寫入磁碟。 伺服器分配了 MemoryStream,序列化為 byte[],並直接傳送給客戶端。 Response.End() 呼叫會刷新回應,並防止在二進位資料之後附加額外的頁面標記。

如何匯出多個工作表或進階工作簿?

單一 WorkBook 可以包含多個工作表,這在需要將多個 GridView 或相同資料集的不同粒度匯出到一個檔案時非常有用。對每個工作表調用一次 workbook.CreateWorkSheet(name)

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

WorkSheet summary = workbook.CreateWorkSheet("Summary");
WorkSheet detail  = workbook.CreateWorkSheet("Detail");

// Populate summary sheet ...
// Populate detail sheet ...

workbook.SaveAs(Server.MapPath("~/Exports/FullReport.xlsx"));
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

WorkSheet summary = workbook.CreateWorkSheet("Summary");
WorkSheet detail  = workbook.CreateWorkSheet("Detail");

// Populate summary sheet ...
// Populate detail sheet ...

workbook.SaveAs(Server.MapPath("~/Exports/FullReport.xlsx"));
$vbLabelText   $csharpLabel

IronXL還支援讀取現有的 Excel 文件,因此您可以加載帶有品牌和格式的預建模板,將資料注入到特定單元格中,並保存結果——保留模板中已有的圖表、圖像和樣式。

為了實現更豐富的輸出, IronXL提供了Excel 公式支援、條件格式設定、圖表建立影像嵌入功能。 這些功能在IronXL教學部分有詳細說明。

IronXL與 EPPlus 和 封閉式 XML 相比如何?

特徵 IronXL EPPlus 封閉式 XML
需安裝辦公室軟體
XLSX 讀取和寫入 是的 是的 是的
XLS(舊版)支持 是的
CSV/TSV匯出 是的 部分的
圖表建立 API 是的 是的 有限的
許可模式 永久 + SaaS Polyform 非商業 麻省理工學院
支援.NET 10 是的 是的 是的

EPPlus在版本 5 中切換到了商業許可,這使得IronXL成為已經投資於商業.NET庫生態系統的團隊的自然選擇。 ClosedXML仍然採用 麻省理工學院 許可證,但對圖表的支援有限。 正確的選擇取決於您專案的授權限制、您需要的 Excel 功能,以及是否需要支援舊版 .xls 格式。

IronXL支援哪些 Excel 格式?

IronXL可以讀取和寫入 .xlsx(Office Open XML)、.xls(舊版 BIFF8)、.csv.tsv 格式。 您可以透過一次 API 調用,將傳遞WorkBook.CreateExcelFileFormat 枚舉值變更為 WorkBook.Create,或透過載入現有檔案並將其另存為不同的格式,在 Excel 檔案格式之間進行轉換。

下一步計劃是什麼?

現在,您可以使用IronXL將ASP.NET GridView 資料匯出到 Excel XLSX 文件,並擁有三種可用於生產環境的模式:

-行迭代導出-- 從綁定匯出到可用匯出的最快路徑 GridView -匯出標題和格式-為報表新增列自動調整大小和粗體標題,使其更美觀。 -基於資料表的匯出-完全繞過分頁或篩選網格的渲染控件

接下來合乎邏輯的步驟是:

1.新增使用 MemoryStreamResponse.BinaryWrite 的瀏覽器下載回應,以便使用者無需伺服器端保存路徑即可立即收到檔案。

  1. 使用IronXL格式 API套用儲存格樣式-粗體標題、背景顏色填滿和數字格式。 3.探索多工作表工作簿,將匯總資料和詳細資料合併到一個文件中,並交付給利害關係人。
  2. 使用IronXL 的讀取 API將 Excel 檔案讀回DataTable 對象,以實現往返匯入/匯出工作流程。
  3. ironsoftware.com/csharp/excel/開始免費試用,使用功能齊全的試用許可證在您的專案中測試所有功能。

對於建立文件產生流程的團隊來說, IronPDF與IronXL集成,可將工作表直接匯出為 PDF。 Iron Suite將IronXL與IronPDF、 IronOCR、 IronBarcode和IronZIP捆綁在一起,以更低的組合價格出售。

常見問題解答

使用 IronXL 將 GridView 匯出至 Excel 的主要目的是什麼?

IronXL 主要用於協助將 ASP.NET GridView 中的資料匯出至 XLSX 等 Excel 格式,確保在 C# 應用程式中具備高效能與簡易的整合性。

IronXL 在從 GridView 匯出資料時能否處理大型資料集?

是的,IronXL 經過優化,能在從 GridView 匯出至 Excel 的過程中高效處理大型資料集,同時維持速度與效能。

使用 IronXL 時,是否可以自訂 Excel 輸出格式?

透過 IronXL,您可以自訂 Excel 輸出文件的各項設定,例如格式、樣式,以及在匯出檔案中加入額外資料或公式。

IronXL 與其他用於將 GridView 匯出至 Excel 的程式庫相比如何?

相較於其他某些函式庫,IronXL程式庫提供更直觀且靈活的解決方案,不僅支援現代 Excel 格式,還能直接與 C# 應用程式整合。

IronXL 是否支援匯出為 XLSX 以外的格式?

是的,IronXL 支援匯出至多種 Excel 格式,包括 XLS、CSV 和 TSV,能靈活滿足不同專案的需求。

在專案中使用 IronXL 有哪些先決條件?

要使用 IronXL,您需要一個 .NET 環境,並可透過 NuGet 在您的 C# 專案中安裝 IronXL。

IronXL 能否以非同步方式匯出 GridView 資料?

IronXL 支援非同步操作,讓開發人員能在不阻塞主應用程式執行緒的情況下,將 GridView 資料匯出至 Excel 檔案。

如何開始使用 IronXL 將 GridView 匯出至 Excel?

開始使用前,請參閱 IronXL 的文件與範例,其中提供逐步指引,說明如何設定並執行從 GridView 將資料匯出至 Excel 的操作。

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me