使用 IRONXL 使用 IronXL.Excel 以格式化 C# 將 GridView 匯出至 Excel Curtis Chau 發表日期:2026年1月12日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 使用 C# 將 GridView 資料匯出到 Excel 並設定格式 在 ASP.NET Web 開發中,將 GridView 資料匯出到 Excel 時保留單元格顏色、字體和格式是一個常見的挑戰,特別是對於面向全球受眾(en-US)的應用程式。 將 GridView 匯出到 Excel 並進行格式化的 C# 流程在伺服器端處理,伺服器端負責管理資料綁定、渲染和輸出格式化。 使用new HtmlTextWriter和new StringWriter寫入控制輸出的傳統方法經常會產生具有格式警告的 Excel 檔案。 有些開發者找到了一種變通方法,即使用public override void VerifyRenderingInServerForm ; 必須新增VerifyRenderingInServerForm事件,以避免在匯出過程中出現執行時間錯誤。 但是,這種方法會建立基於 HTML 的文件,而 MS Excel 可能無法正確渲染這些文件。 要成功匯出到 Excel,必須將 GridView 放置在帶有runat="server" form 標籤內。 預設情況下,某些匯出選項或設定可能會生效,除非明確更改,例如ExportAll選項或最大行數。 在 C# 和 VB.NET 實作中,匯出邏輯通常是透過按鈕點擊事件觸發的,其中事件處理程序簽章包含諸如 C# 中的object sender, EventArgs e或 VB.NET 中的ByVal sender As Object, ByVal e As EventArgs類的參數。 IronXL提供了更簡潔的解決方案——創建具有完整格式控制的原生 Excel 文件,而無需安裝 Microsoft Office。 本文示範如何在 ASP.NET Web Forms 和 Windows Forms 應用程式中將 GridView 匯出到 Excel。 資料匯出簡介 將 GridView 中的資料匯出到 Excel 檔案是許多 ASP.NET 和 Windows Forms 應用程式的基本功能。 無論您是建立報表儀表板還是為使用者提供下載資料進行離線分析的功能,將 GridView 內容匯出到 Excel 表格的功能都能確保您的資料在 MS Excel 中易於存取和處理。 這個過程通常涉及將 GridView 控制項中的值(例如行、列和儲存格)傳輸到結構化的 Excel 檔案中,同時保持所需的格式和樣式。 一個設計完善的匯出到 Excel 的解決方案不僅僅是複製資料; 它還保留字串樣式,應用交替行顏色以提高可讀性,並設定正確的內容佈局,以便用戶可以將文件下載為附件。 開發人員經常使用程式碼範例來示範如何以程式設計方式建立 Excel 文件,利用諸如public override void VerifyRenderingInServerForm之類的方法來避免 ASP.NET 中的執行階段錯誤,以及Response.AddHeader來指定檔案名稱和附件類型。 在 Windows Forms 中,匯出過程類似,但檔案是直接儲存到系統中,而不是串流到瀏覽器。 格式是專業匯出過程中的關鍵環節。 透過自訂字體、背景顏色和邊框,您可以確保匯出的 Excel 表格與您的應用程式的外觀和風格相符。 使用諸如new StringWriter和new HtmlTextWriter之類的對象,或者更高級的庫,您可以控制 Excel 文件的輸出和結構。錯誤處理也至關重要——透過捕捉異常(例如Exception ex ),即使在匯出過程中出現問題,您也可以提供流暢的使用者體驗。 如何使用物件傳送器將 Windows Forms DataGridView 匯出到 Excel 檔案並保留儲存格格式 最可靠的方法是提取 GridView 的底層 DataTable,並透過程式設計建立樣式化的 Excel 表格。 這種方法可以避免格式錯誤,並能完全控制標題樣式、交替行顏色和邊框。 請注意,如果您的頁面使用了分頁功能,請在匯出前停用分頁功能以擷取所有記錄。 Windows Forms 應用程式使用 DataGridView 控制項而不是基於 Web 的 GridView 控制項。 匯出到 Excel 的過程遵循相同的模式—從行和儲存格集合中提取儲存格值,然後套用格式。 using IronXL; using IronXL.Styles; using System; using System.Data; using System.IO; using System.Windows.Forms; private void btnExport_Click(object sender, EventArgs e) { DataTable dt = (DataTable)GridView1.DataSource; WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.DefaultWorkSheet; // Export header row with formatting for (int col = 0; col < dt.Columns.Count; col++) { workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName); var cell = workSheet.GetCellAt(0, col); cell.Style.Font.Bold = true; cell.Style.SetBackgroundColor("#4472C4"); cell.Style.Font.Color = "#FFFFFF"; cell.Style.BottomBorder.Type = BorderType.Thin; } // Export data rows with alternating row color for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { var cellValue = dt.Rows[row][col]; workSheet.SetCellValue(row + 1, col, cellValue?.ToString() ?? ""); var cell = workSheet.GetCellAt(row + 1, col); string bgColor = (row % 2 == 0) ? "#D6DCE5" : "#FFFFFF"; cell.Style.SetBackgroundColor(bgColor); cell.Style.BottomBorder.Type = BorderType.Thin; } } // Save and write response for download MemoryStream stream = workBook.ToStream(); using (SaveFileDialog saveFileDialog = new SaveFileDialog()) { saveFileDialog.Filter = "Excel Files|*.xlsx"; saveFileDialog.Title = "Save Excel File"; saveFileDialog.FileName = "GridViewExport.xlsx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { using (FileStream fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) { stream.WriteTo(fileStream); } MessageBox.Show("Export successful.", "Export", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } using IronXL; using IronXL.Styles; using System; using System.Data; using System.IO; using System.Windows.Forms; private void btnExport_Click(object sender, EventArgs e) { DataTable dt = (DataTable)GridView1.DataSource; WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.DefaultWorkSheet; // Export header row with formatting for (int col = 0; col < dt.Columns.Count; col++) { workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName); var cell = workSheet.GetCellAt(0, col); cell.Style.Font.Bold = true; cell.Style.SetBackgroundColor("#4472C4"); cell.Style.Font.Color = "#FFFFFF"; cell.Style.BottomBorder.Type = BorderType.Thin; } // Export data rows with alternating row color for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { var cellValue = dt.Rows[row][col]; workSheet.SetCellValue(row + 1, col, cellValue?.ToString() ?? ""); var cell = workSheet.GetCellAt(row + 1, col); string bgColor = (row % 2 == 0) ? "#D6DCE5" : "#FFFFFF"; cell.Style.SetBackgroundColor(bgColor); cell.Style.BottomBorder.Type = BorderType.Thin; } } // Save and write response for download MemoryStream stream = workBook.ToStream(); using (SaveFileDialog saveFileDialog = new SaveFileDialog()) { saveFileDialog.Filter = "Excel Files|*.xlsx"; saveFileDialog.Title = "Save Excel File"; saveFileDialog.FileName = "GridViewExport.xlsx"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { using (FileStream fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write)) { stream.WriteTo(fileStream); } MessageBox.Show("Export successful.", "Export", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } Imports IronXL Imports IronXL.Styles Imports System Imports System.Data Imports System.IO Imports System.Windows.Forms Private Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click Dim dt As DataTable = DirectCast(GridView1.DataSource, DataTable) Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) Dim workSheet As WorkSheet = workBook.DefaultWorkSheet ' Export header row with formatting For col As Integer = 0 To dt.Columns.Count - 1 workSheet.SetCellValue(0, col, dt.Columns(col).ColumnName) Dim cell = workSheet.GetCellAt(0, col) cell.Style.Font.Bold = True cell.Style.SetBackgroundColor("#4472C4") cell.Style.Font.Color = "#FFFFFF" cell.Style.BottomBorder.Type = BorderType.Thin Next ' Export data rows with alternating row color For row As Integer = 0 To dt.Rows.Count - 1 For col As Integer = 0 To dt.Columns.Count - 1 Dim cellValue = dt.Rows(row)(col) workSheet.SetCellValue(row + 1, col, If(cellValue?.ToString(), "")) Dim cell = workSheet.GetCellAt(row + 1, col) Dim bgColor As String = If(row Mod 2 = 0, "#D6DCE5", "#FFFFFF") cell.Style.SetBackgroundColor(bgColor) cell.Style.BottomBorder.Type = BorderType.Thin Next Next ' Save and write response for download Dim stream As MemoryStream = workBook.ToStream() Using saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xlsx" saveFileDialog.Title = "Save Excel File" saveFileDialog.FileName = "GridViewExport.xlsx" If saveFileDialog.ShowDialog() = DialogResult.OK Then Using fileStream As New FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write) stream.WriteTo(fileStream) End Using MessageBox.Show("Export successful.", "Export", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Using End Sub $vbLabelText $csharpLabel 此範例建立了一個按鈕點擊處理程序,並帶有object sender和EventArgs e參數。 該程式碼將 GridView 的DataSource屬性強制轉換為 DataTable,從而可以存取資料表中的所有值。 WorkBook.Create方法初始化一個新的 Excel 文件, DefaultWorkSheet傳回活動工作表。 您可以在匯出過程中透過SheetName屬性指定工作表名稱。 DataGridView匯出功能透過HeaderText屬性存取列標題。 單元格值來自Cells集合,使用行索引和列索引。 var關鍵字與空條件運算子搭配使用,透過將 null 轉換為空字串來處理空單元格。 與使用Response將檔案寫入 Web 下載的 ASP.NET 不同,Windows Forms 直接儲存到系統中。 IronXL 建立的原生 XLSX 或 XLS 格式檔案可以在 MS Excel 中開啟而不會出現格式警告。 輸出 使用 IronXL 將 GridView 匯出到 Excel 並設定格式(C#):圖 1 - GridView 輸出 使用 IronXL 將 GridView 匯出到 Excel 並設定格式(C#):圖 2 - Excel 輸出 使用 IronXL 將 GridView 匯出到 Excel 並設定格式(C#):圖 3 - 訊息輸出 結論 IronXL 將 GridView 匯出到 Excel 的格式設定難題變成了一個簡單的過程。 此函式庫可處理標題樣式、交替行顏色、條件格式和邊框-無需 Office 相依性。 我們希望本教學能幫助您在 .NET 應用程式中建立專業的 Excel 匯出檔案。 立即開始免費試用,匯出帶有格式的 GridView 數據,或探索部署授權選項。 如需支援和詳細信息,請參閱文件。 常見問題解答 如何在 C# 中將 GridView 資料匯出至 Excel? 您可以使用 IronXL.Excel 函式庫,在 C# 中將 GridView 資料匯出至 Excel。它可讓您以程式化的方式建立 Excel 檔案,並輕鬆匯出資料,包括格式化和樣式。 為什麼要使用 IronXL 來匯出 GridView 資料? IronXL 透過其直覺的 API 簡化了匯出 GridView 資料的過程,讓您可以毫不費力地維護格式和套用樣式,而傳統的方法在這方面可能具有挑戰性。 將 GridView 匯出至 Excel 時,IronXL 是否支援格式化? 是的,IronXL 支援各種格式化選項,包括字型、顏色和單元格樣式,確保您匯出的 Excel 檔案看起來很專業,並維持預期的設計。 我可以自訂由 GridView 資料產生的 Excel 檔案外觀嗎? IronXL 為 Excel 檔案提供一系列自訂選項,讓您在從 GridView 匯出時,可調整儲存格樣式、字型、顏色等,以符合您的特定需求。 是否可以使用 IronXL.Excel 將大型 GridView 資料集匯出到 Excel? IronXL.Excel 能夠有效率地處理大型資料集,確保您能夠將廣泛的 GridView 資料匯出至 Excel 而不會產生效能問題。 與其他方法相比,使用 IronXL.Excel 將 GridView 資料匯出至 Excel 有哪些優點? IronXL 為匯出 GridView 資料提供了更精簡、更靈活的方法,為格式化、自訂和處理大型資料集提供了強大的支援,使其優於許多其他方法。 將 GridView 匯出至 Excel 時,如何維持資料的完整性? IronXL.Excel 透過在從 GridView 匯出至 Excel 的過程中準確地轉換和保留資料類型與格式,以確保資料的完整性。 IronXL 可以從具有複雜結構的 GridView 控件匯出資料嗎? 是的,IronXL.Excel 可以有效地處理和匯出具有複雜結構的 GridView 控件中的資料,並維持產生的 Excel 檔案中的層次結構和格式。 IronXL 可以將 GridView 資料匯出成哪些檔案格式? IronXL.Excel 主要將資料匯出為 Excel 格式,例如 XLSX,但它也支援其他格式,例如 CSV,可依您的需求彈性處理。 是否支援使用 IronXL 匯出具有條件格式化的 GridView? IronXL.Excel 支援條件格式化,讓您在匯出 GridView 資料至 Excel 時,可根據儲存格值設定動態調整的規則和樣式。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多 發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多 發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多 使用 IronXL.Excel 將 GridView 匯出至 Excel XLSX C#如何將資料集匯出至 Excel V...
發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多
發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多
發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多