使用 IRONXL C# DataGridView Export to Excel with Formatting:完整指南 Curtis Chau 更新:2026年1月5日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 將 DataGridView 資料匯出至 Excel 檔案是 Windows Forms 應用程式的常見需求。 無論是產生報表或傳輸資料進行分析,開發人員都需要一個可靠的方法來匯出 DataGridView 的內容,同時保留格式。 在這篇文章中,我們將教您如何使用 IronXL 將 DataGridView 匯出至 Excel,這是一種現代化的方法,不需要安裝 Microsoft Excel 即可完美運作。 !{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110-- 如何為 DataGridView 匯出設定 Windows 表單專案? 傳統的方法需要透過 COM 標籤加入 Microsoft Excel 物件庫的參照。 然而,此方法有顯著的缺點:需要在每台機器上安裝 Microsoft Excel、涉及使用 private void releaseobject 方法釋放物件的複雜模式,以及在處理大型 Excel 檔案時表現不佳。 IronXL 完全消除了這些問題。 在 Visual Studio 中,只需透過 NuGet Package Manager 進行安裝,無需選擇"新增參考"功能表或瀏覽 COM 索引標籤。 該資料庫可處理所有資料匯出作業,而不需依賴 Microsoft Office。 要開始使用,請在 Visual Studio 中建立一個新的 Windows Forms 專案,然後將下列命名空間新增至您的表單: using IronXL; using System.Data; using IronXL; using System.Data; Imports IronXL Imports System.Data $vbLabelText $csharpLabel 在您的表單中加入 DataGridView 控件和 Button。 DataGridView 控件會在匯出前顯示資料,而按鈕則會觸發匯出 DataGridView 作業。 如何將資料載入 DataGridView 控件? 表單載入事件非常適用於將資料填充到您的 DataGridView 中。 以下程式碼範例示範將 DataTable 綁定至 DataGridView 控件: private void Form1_Load(object sender, EventArgs e) { // Create DataTable with sample data DataTable dt = new DataTable(); dt.Columns.Add("ProductID", typeof(int)); dt.Columns.Add("ProductName", typeof(string)); dt.Columns.Add("Price", typeof(decimal)); dt.Columns.Add("Stock", typeof(int)); // Add rows with values dt.Rows.Add(1, "Laptop", 999.99, 50); dt.Rows.Add(2, "Mouse", 29.99, 200); dt.Rows.Add(3, "Keyboard", 79.99, 150); dt.Rows.Add(4, "Monitor", 349.99, 75); dataGridView1.DataSource = dt; } private void Form1_Load(object sender, EventArgs e) { // Create DataTable with sample data DataTable dt = new DataTable(); dt.Columns.Add("ProductID", typeof(int)); dt.Columns.Add("ProductName", typeof(string)); dt.Columns.Add("Price", typeof(decimal)); dt.Columns.Add("Stock", typeof(int)); // Add rows with values dt.Rows.Add(1, "Laptop", 999.99, 50); dt.Rows.Add(2, "Mouse", 29.99, 200); dt.Rows.Add(3, "Keyboard", 79.99, 150); dt.Rows.Add(4, "Monitor", 349.99, 75); dataGridView1.DataSource = dt; } Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Create DataTable with sample data Dim dt As New DataTable() dt.Columns.Add("ProductID", GetType(Integer)) dt.Columns.Add("ProductName", GetType(String)) dt.Columns.Add("Price", GetType(Decimal)) dt.Columns.Add("Stock", GetType(Integer)) ' Add rows with values dt.Rows.Add(1, "Laptop", 999.99D, 50) dt.Rows.Add(2, "Mouse", 29.99D, 200) dt.Rows.Add(3, "Keyboard", 79.99D, 150) dt.Rows.Add(4, "Monitor", 349.99D, 75) dataGridView1.DataSource = dt End Sub $vbLabelText $csharpLabel 填充式資料庫 這段程式碼建立了一個有四列的 DataTable dt,然後使用 Add 方法以範例值填充 DataGridView 行。 DataGridView 控件接受 DataTable 作為其資料來源,這將以表格格式顯示資料。 第一列包含整數 ID,其他列則包含字串和十進位值。 如何將 DataGridView 資料匯出至 Excel 檔案? 按鈕按一下事件處理器包含核心匯出邏輯。 IronXL 的方法有別於傳統方法; DataGridView 的內容可透過 DataTable 的中間步驟直接匯出至 Excel 檔案: private void btnExport_Click(object sender, EventArgs e) { try { // Convert DataGridView to DataTable DataTable dt = new DataTable(); foreach (DataGridViewColumn column in dataGridView1.Columns) dt.Columns.Add(column.HeaderText); foreach (DataGridViewRow row in dataGridView1.Rows) { if (!row.IsNewRow) { DataRow dataRow = dt.NewRow(); for (int i = 0; i < dataGridView1.Columns.Count; i++) dataRow[i] = row.Cells[i].Value; dt.Rows.Add(dataRow); } } // Create workbook and export WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.DefaultWorkSheet; worksheet.LoadFromDataTable(dt, true); workbook.SaveAs("C:\\Reports\\Export.xlsx"); MessageBox.Show("Export complete!"); } catch (Exception ex) { MessageBox.Show($"Error: {ex.Message}"); } } private void btnExport_Click(object sender, EventArgs e) { try { // Convert DataGridView to DataTable DataTable dt = new DataTable(); foreach (DataGridViewColumn column in dataGridView1.Columns) dt.Columns.Add(column.HeaderText); foreach (DataGridViewRow row in dataGridView1.Rows) { if (!row.IsNewRow) { DataRow dataRow = dt.NewRow(); for (int i = 0; i < dataGridView1.Columns.Count; i++) dataRow[i] = row.Cells[i].Value; dt.Rows.Add(dataRow); } } // Create workbook and export WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.DefaultWorkSheet; worksheet.LoadFromDataTable(dt, true); workbook.SaveAs("C:\\Reports\\Export.xlsx"); MessageBox.Show("Export complete!"); } catch (Exception ex) { MessageBox.Show($"Error: {ex.Message}"); } } Private Sub btnExport_Click(sender As Object, e As EventArgs) Try ' Convert DataGridView to DataTable Dim dt As New DataTable() For Each column As DataGridViewColumn In dataGridView1.Columns dt.Columns.Add(column.HeaderText) Next For Each row As DataGridViewRow In dataGridView1.Rows If Not row.IsNewRow Then Dim dataRow As DataRow = dt.NewRow() For i As Integer = 0 To dataGridView1.Columns.Count - 1 dataRow(i) = row.Cells(i).Value Next dt.Rows.Add(dataRow) End If Next ' Create workbook and export Dim workbook As WorkBook = WorkBook.Create() Dim worksheet As WorkSheet = workbook.DefaultWorkSheet worksheet.LoadFromDataTable(dt, True) workbook.SaveAs("C:\Reports\Export.xlsx") MessageBox.Show("Export complete!") Catch ex As Exception MessageBox.Show($"Error: {ex.Message}") End Try End Sub $vbLabelText $csharpLabel DataGridView 至 Excel 輸出。 此按鈕點選事件處理器具有 object sender, EventArgs e 參數,它會遍歷 DataGridView 行和列中的所有資料,建立一個 DataTable 。 LoadFromDataTable 方法接受 DataTable 並填充工作表。 然後將工作簿物件儲存至指定位置。 IronXL.Excel 也能有效率地輸出大型 Excel 檔案,而不會產生 Microsoft Interop 常見的記憶體問題。 如何在匯出的 Excel 檔案中套用格式化? 建立格式化的 Excel 檔案需要為標頭行和儲存格設計樣式。 本範例示範套用標題行背景顏色和交替行造型: private void ExportWithFormatting(object sender, EventArgs e) { WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.DefaultWorkSheet; // Add header row string[] headers = { "ID", "Name", "Price", "Stock" }; for (int col = 0; col < headers.Length; col++) { worksheet.SetCellValue(0, col, headers[col]); worksheet[$"{(char)('A' + col)}1"].Style.Font.Bold = true; worksheet[$"{(char)('A' + col)}1"].Style.SetBackgroundColor("#4472C4"); } // Add data with alternating row colors int rowIndex = 1; foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.IsNewRow) continue; for (int col = 0; col < dataGridView1.Columns.Count; col++) { worksheet.SetCellValue(rowIndex, col, row.Cells[col].Value?.ToString()); } // Apply alternating background colors if (rowIndex % 2 == 0) { var range = worksheet[$"A{rowIndex + 1}:D{rowIndex + 1}"]; range.Style.SetBackgroundColor("#D6DCE5"); } rowIndex++; } workbook.SaveAs("C:\\Reports\\FormattedExport.xlsx"); } private void ExportWithFormatting(object sender, EventArgs e) { WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.DefaultWorkSheet; // Add header row string[] headers = { "ID", "Name", "Price", "Stock" }; for (int col = 0; col < headers.Length; col++) { worksheet.SetCellValue(0, col, headers[col]); worksheet[$"{(char)('A' + col)}1"].Style.Font.Bold = true; worksheet[$"{(char)('A' + col)}1"].Style.SetBackgroundColor("#4472C4"); } // Add data with alternating row colors int rowIndex = 1; foreach (DataGridViewRow row in dataGridView1.Rows) { if (row.IsNewRow) continue; for (int col = 0; col < dataGridView1.Columns.Count; col++) { worksheet.SetCellValue(rowIndex, col, row.Cells[col].Value?.ToString()); } // Apply alternating background colors if (rowIndex % 2 == 0) { var range = worksheet[$"A{rowIndex + 1}:D{rowIndex + 1}"]; range.Style.SetBackgroundColor("#D6DCE5"); } rowIndex++; } workbook.SaveAs("C:\\Reports\\FormattedExport.xlsx"); } Private Sub ExportWithFormatting(sender As Object, e As EventArgs) Dim workbook As WorkBook = WorkBook.Create() Dim worksheet As WorkSheet = workbook.DefaultWorkSheet ' Add header row Dim headers As String() = {"ID", "Name", "Price", "Stock"} For col As Integer = 0 To headers.Length - 1 worksheet.SetCellValue(0, col, headers(col)) worksheet($"{ChrW(AscW("A"c) + col)}1").Style.Font.Bold = True worksheet($"{ChrW(AscW("A"c) + col)}1").Style.SetBackgroundColor("#4472C4") Next ' Add data with alternating row colors Dim rowIndex As Integer = 1 For Each row As DataGridViewRow In dataGridView1.Rows If row.IsNewRow Then Continue For For col As Integer = 0 To dataGridView1.Columns.Count - 1 worksheet.SetCellValue(rowIndex, col, If(row.Cells(col).Value?.ToString(), String.Empty)) Next ' Apply alternating background colors If rowIndex Mod 2 = 0 Then Dim range = worksheet($"A{rowIndex + 1}:D{rowIndex + 1}") range.Style.SetBackgroundColor("#D6DCE5") End If rowIndex += 1 Next workbook.SaveAs("C:\Reports\FormattedExport.xlsx") End Sub $vbLabelText $csharpLabel 格式化的 Excel 檔案輸出 。 此 C# DataGridView 匯出至 Excel 的格式化範例將設定第一行為具有粗體字型和背景顏色的樣式化標頭行。 程式碼應用交替行的樣式,以提高可讀性。 您可以使用 IronXL 全面的 樣式 API 自訂具有不同字體樣式、填充樣式和邊框配置的儲存格。 結論 有了 IronXL.Excel,在 Windows Forms 應用程式中將 DataGridView 匯出至 Excel 就變得簡單直接。 IronXL.Excel 與傳統 Microsoft Excel 物件庫方法不同,需要 COM 標籤參照和複雜的物件清理程式碼,IronXL.Excel 提供簡潔、現代化的 API,用於建立具有格式化功能的 Excel 檔案。 該函式庫可處理從基本資料匯出至 Excel,到複雜的格式化 Excel 檔案產生等各種功能,包括標題行背景顏色造型和交替行。 對於處理大型 Excel 檔案的應用程式,IronXL.Excel 可提供優異的效能,而無需安裝 Microsoft Excel。 準備好簡化您的 DataGridView 到 Excel 的工作流程了嗎? 立即開始免費試用,或探索生產部署的 IronXL 授權選項。 常見問題解答 如何在 C# 中將 DataGridView 資料匯出至 Excel? 使用 IronXL,您可以利用其強大的資料操作和匯出功能,在 C# 中輕鬆地將 DataGridView 資料匯出至 Excel 檔案。 將 DataGridView 匯出至 Excel 時,有哪些格式化選項可用? IronXL.Excel 允許您在匯出 DataGridView 到 Excel 時套用各種格式化選項,例如標題樣式和交替的行顏色。 是否可以在 Windows 窗體應用程式中將 DataGridView 資料匯出至 Excel? 是的,您可以在 Windows 窗體應用程式中使用 IronXL.Excel 將 DataGridView 資料匯出至 Excel,IronXL.Excel 可針對此目的提供無縫整合與功能。 匯出 DataGridView 到 Excel 時,可以樣式化標題嗎? IronXL.Excel 可讓您在匯出 DataGridView 資料至 Excel 時,使用自訂字型、顏色和其他格式選項來調整標題樣式。 從 DataGridView 匯出時,如何在 Excel 中套用交替的行顏色? IronXL.Excel 允許您在從 DataGridView 匯出資料時,在 Excel 表單上套用交替的行顏色,增強資料的視覺吸引力和可讀性。 我需要特殊的函式庫才能以 C# 將 DataGridView 匯出至 Excel 嗎? 是的,使用 IronXL 之類的函式庫可以簡化在 C# 中將 DataGridView 匯出至 Excel 的過程,提供強大的資料處理和格式化工具。 使用 IronXL 將 DataGridView 匯出至 Excel 有哪些好處? IronXL.Excel 具備易用性、全面的格式化選項以及與 Windows Forms 相容等優點,因此非常適合將 DataGridView 匯出至 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 的相依性。 閱讀更多 閱讀 CSV .NET:使用 IronXL 的最簡單 C# 方法如何使用 IronXL.Excel 使用 C#...
發表日期 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 的相依性。 閱讀更多