使用 IRONXL 使用IronXL在C#中將DataGridView匯出到Excel。 Jordi Bardia 更新:2026年2月27日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 使用IronXL將 DataGridView 資料匯出到 Excel(C#),消除對 Microsoft Office 的依賴,並提供容器友善的部署。 建立 WorkBook,遍歷 DataGridView 個儲存格,並以具有完整格式支援的 XLSX 格式儲存。 將 Windows Forms 中的資料匯出到 Excel 是商業應用程式中的常見需求。 無論是產生報告、創建資料備份,還是與利益相關者共享信息,開發人員都需要一種可靠的方法將 GridView 資料匯出為 Excel 格式。 使用 Microsoft Office Interop 的傳統方法已經達到了這個目的,但它們存在部署複雜性和依賴性要求,這可能會使應用程式分發變得複雜。 本教學示範了一個實用的 C# 範例,使用IronXL (一個.NET庫,無需安裝 Microsoft Office)將 DataGridView 資料匯出到 Excel。 您將探索如何實現一個乾淨、高效的匯出解決方案,該方案可在不同的環境中運行,包括雲端平台和容器。 無論是部署到 Azure 或在 Docker 容器中執行應用程序, IronXL都能提供 DevOps 團隊所需的部署彈性。 IronXL首頁展示了無需 Microsoft Office 或 Excel Interop 即可讀取 Excel 檔案的 C# 程式碼範例,並提供了語法高亮和NuGet下載統計資料。 為什麼匯出到 Excel 至關重要? DataGridView 控制項是 Windows 窗體應用程式的基礎,用於顯示使用者每天與之互動的表格資料。 將此資料匯出到 Excel 後,使用者可以應用 Excel 強大的分析工具、建立演示文稿,並與可能無法存取應用程式的同事共用資料。 C# Excel匯出功能對於業務報表和資料分析工作流程至關重要。 使用Microsoft.Office.Interop.Excel的傳統匯出方法需要在執行該應用程式的每台電腦上安裝 Excel。 這會帶來部署方面的挑戰,尤其是在伺服器環境中或向沒有 Office 授權的使用者分發應用程式時。 此外,如果處理不當,互通方法可能會出現記憶體洩漏和 COM 物件清理問題。 當部署到 AWS Lambda 或其他無法安裝 Office 的無伺服器平台時,這些挑戰會變得特別嚴峻。 現代.NET應用程式需要更靈活的解決方案。 IronXL透過提供一個獨立的程式庫來應對這些挑戰,該程式庫可以產生不依賴任何 Microsoft Office 的 Excel 檔案。 這種方法確保了開發、測試和生產環境的功能一致性,同時支援部署到容器和雲端平台。 IronXL和 Interop 有什麼不同? 下表總結了IronXL和 Microsoft Office Interop 在 Excel 匯出場景中的主要差異: IronXL與 Microsoft Office Interop 在 Excel 匯出方面的比較 特徵 IronXL Microsoft Interop 需安裝辦公室軟體 不 是的 Linux/Docker 支援 是的 不 COM物件清理 無需 手動操作,容易出錯 記憶體洩漏風險 低的 如果不加以處置,後果不堪設想。 雲端/無伺服器部署 支援 不支援 匯出格式(XLSX、CSV、JSON、XML) 所有支持 有限的 如何在 C# 專案中安裝IronXL ? 在 Visual Studio 中開啟程式包管理器控制台並執行以下命令,或使用.NET CLI: Install-Package IronXL dotnet add package IronXL Install-Package IronXL dotnet add package IronXL SHELL 有關詳細的安裝選項,請參閱IronXL NuGet安裝指南或直接在NuGet上搜尋該軟體套件。 安裝完成後,將 using IronXL; 新增至您的 C# 專案檔案中,即可存取該程式庫的 Excel 匯出功能。 部署到生產環境時,請套用您的許可證金鑰以啟用所有功能。 您可以先獲得免費試用許可證,以便在購買前評估IronXL 。 基本的 DataGridView 匯出是什麼樣的? 以下程式碼建立了一個範例 Windows 窗體應用程序,其中包含填充的數據,然後使用IronXL頂級語句將其匯出到 Excel: using IronXL; using System.Data; using System.Windows.Forms; // Create a DataTable with sample product data var dt = new DataTable(); dt.Columns.Add("Product ID", typeof(int)); dt.Columns.Add("Product Name", typeof(string)); dt.Columns.Add("Category", typeof(string)); dt.Columns.Add("Price", typeof(decimal)); dt.Columns.Add("Stock", typeof(int)); dt.Rows.Add(1001, "Laptop Pro", "Electronics", 1299.99m, 15); dt.Rows.Add(1002, "Wireless Mouse", "Accessories", 29.99m, 50); dt.Rows.Add(1003, "USB-C Cable", "Accessories", 19.99m, 100); dt.Rows.Add(1004, "Monitor 27\"", "Electronics", 399.99m, 8); dt.Rows.Add(1005, "Keyboard Mechanical", "Accessories", 89.99m, 25); // Bind to DataGridView var dataGridView1 = new DataGridView(); dataGridView1.DataSource = dt; // Create new Excel workbook var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // Export column headers for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { worksheet.SetCellValue(0, colIndex, dataGridView1.Columns[colIndex].HeaderText); } // Export data rows for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) { if (!dataGridView1.Rows[rowIndex].IsNewRow) { for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var cellValue = dataGridView1.Rows[rowIndex].Cells[colIndex].Value; if (cellValue is decimal or double or int) worksheet.SetCellValue(rowIndex + 1, colIndex, Convert.ToDouble(cellValue)); else worksheet.SetCellValue(rowIndex + 1, colIndex, cellValue?.ToString() ?? string.Empty); } } } // Save the Excel file workbook.SaveAs("DataGridViewExport.xlsx"); Console.WriteLine("Export completed successfully!"); using IronXL; using System.Data; using System.Windows.Forms; // Create a DataTable with sample product data var dt = new DataTable(); dt.Columns.Add("Product ID", typeof(int)); dt.Columns.Add("Product Name", typeof(string)); dt.Columns.Add("Category", typeof(string)); dt.Columns.Add("Price", typeof(decimal)); dt.Columns.Add("Stock", typeof(int)); dt.Rows.Add(1001, "Laptop Pro", "Electronics", 1299.99m, 15); dt.Rows.Add(1002, "Wireless Mouse", "Accessories", 29.99m, 50); dt.Rows.Add(1003, "USB-C Cable", "Accessories", 19.99m, 100); dt.Rows.Add(1004, "Monitor 27\"", "Electronics", 399.99m, 8); dt.Rows.Add(1005, "Keyboard Mechanical", "Accessories", 89.99m, 25); // Bind to DataGridView var dataGridView1 = new DataGridView(); dataGridView1.DataSource = dt; // Create new Excel workbook var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // Export column headers for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { worksheet.SetCellValue(0, colIndex, dataGridView1.Columns[colIndex].HeaderText); } // Export data rows for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) { if (!dataGridView1.Rows[rowIndex].IsNewRow) { for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var cellValue = dataGridView1.Rows[rowIndex].Cells[colIndex].Value; if (cellValue is decimal or double or int) worksheet.SetCellValue(rowIndex + 1, colIndex, Convert.ToDouble(cellValue)); else worksheet.SetCellValue(rowIndex + 1, colIndex, cellValue?.ToString() ?? string.Empty); } } } // Save the Excel file workbook.SaveAs("DataGridViewExport.xlsx"); Console.WriteLine("Export completed successfully!"); $vbLabelText $csharpLabel 此程式碼演示了核心導出功能。 DataTable 設定使用範例產品資料填入網格,作為 DataGridView 控制項的通用資料來源。 處理大型資料集時,可考慮使用 IronXL 的資料集匯入和匯出功能以提高效能。 匯出循環遍歷 DataGridView,使用 SetCellValue 和行和列索引將標題和資料放入 Excel 儲存格中。 IronXL文件涵蓋了針對更複雜場景的其他儲存格寫入選項。 IsNewRow 檢查會跳過可編輯的 DataGridViews 底部的空白行,從而確保 Excel 輸出乾淨,不會出現意外的空白行。 如果您在基於 Web 的ASP.NET MVC 應用程式中實現此功能,請透過使用 Content-Disposition HTTP 標頭將檔案作為可下載的回應傳回來擴充此方法。 對於ASP.NET WebForms 開發人員,在匯出控制項時可能需要重寫 VerifyRenderingInServerForm 以確保正確呈現。 請造訪IronXL功能頁面,查看支援場景的完整清單。 如何為Excel匯出檔案新增專業格式? 專業Excel匯出檔案通常需要進行格式設定以提高可讀性。 IronXL提供樣式設定功能,包括字型自訂、背景顏色、邊框和對齊方式。 以下範例新增了標題格式和交替行顏色: using IronXL; using System.Data; using System.Windows.Forms; // Assume dataGridView1 is already populated with data var dataGridView1 = new DataGridView(); // (populate dataGridView1 with data as shown in the previous example) var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // Set column headers with formatting for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var headerCell = worksheet.GetCellAt(0, colIndex); headerCell.Value = dataGridView1.Columns[colIndex].HeaderText; headerCell.Style.Font.Bold = true; headerCell.Style.BackgroundColor = "#4472C4"; headerCell.Style.Font.Color = "#FFFFFF"; headerCell.Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center; } // Export data with alternating row colors for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) { if (!dataGridView1.Rows[rowIndex].IsNewRow) { for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var cellValue = dataGridView1.Rows[rowIndex].Cells[colIndex].Value; var excelCell = worksheet.GetCellAt(rowIndex + 1, colIndex); if (cellValue != null) excelCell.Value = cellValue.ToString(); // Apply alternating row background if (rowIndex % 2 == 0) excelCell.Style.BackgroundColor = "#F2F2F2"; } } } // Auto-fit columns for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { worksheet.AutoSizeColumn(colIndex); } workbook.SaveAs("FormattedExport.xlsx"); Console.WriteLine("Formatted export completed successfully!"); using IronXL; using System.Data; using System.Windows.Forms; // Assume dataGridView1 is already populated with data var dataGridView1 = new DataGridView(); // (populate dataGridView1 with data as shown in the previous example) var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // Set column headers with formatting for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var headerCell = worksheet.GetCellAt(0, colIndex); headerCell.Value = dataGridView1.Columns[colIndex].HeaderText; headerCell.Style.Font.Bold = true; headerCell.Style.BackgroundColor = "#4472C4"; headerCell.Style.Font.Color = "#FFFFFF"; headerCell.Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center; } // Export data with alternating row colors for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) { if (!dataGridView1.Rows[rowIndex].IsNewRow) { for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { var cellValue = dataGridView1.Rows[rowIndex].Cells[colIndex].Value; var excelCell = worksheet.GetCellAt(rowIndex + 1, colIndex); if (cellValue != null) excelCell.Value = cellValue.ToString(); // Apply alternating row background if (rowIndex % 2 == 0) excelCell.Style.BackgroundColor = "#F2F2F2"; } } } // Auto-fit columns for (int colIndex = 0; colIndex < dataGridView1.Columns.Count; colIndex++) { worksheet.AutoSizeColumn(colIndex); } workbook.SaveAs("FormattedExport.xlsx"); Console.WriteLine("Formatted export completed successfully!"); $vbLabelText $csharpLabel 此增強版可為匯出的 Excel 檔案套用專業格式。標題採用粗體文本,藍色背景,白色字體,與資料行形成清晰的視覺區分。 此程式碼使用取模運算實作交替行顏色,提高了大型資料集的可讀性。 您可以使用IronXL儲存格格式指南進一步自訂外觀,或套用合併儲存格功能來跨越標題列。 AutoSizeColumn 方法會調整列寬以適應內容,從而避免匯出後手動調整。 這些格式設定選項可以將基本資料匯出轉換為使用者可以立即分享的簡報文件。 查看如何使用IronXL編寫 Excel 文件,以了解更多格式設定和資料寫入模式。 如何匯出為多種格式並新增公式? IronXL 的功能不僅限於基本的 Excel 匯出,還提供公式支援、多工作表和替代輸出格式等功能。 以下範例示範了這些功能: using IronXL; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // (populate worksheet with DataGridView data as shown above) int dataRowCount = 5; // Replace with actual dataGridView1.Rows.Count // Add a SUM formula to calculate the total price column worksheet.SetCellValue(dataRowCount + 2, 3, $"=SUM(D2:D{dataRowCount + 1})"); // Create a summary worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); summarySheet.SetCellValue(0, 0, "Total Products"); summarySheet.SetCellValue(0, 1, dataRowCount); // Save in multiple formats workbook.SaveAs("export.xlsx"); workbook.SaveAsCsv("export.csv"); workbook.SaveAsJson("export.json"); workbook.SaveAsXml("export.xml"); Console.WriteLine("Multi-format export completed!"); using IronXL; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.DefaultWorkSheet; // (populate worksheet with DataGridView data as shown above) int dataRowCount = 5; // Replace with actual dataGridView1.Rows.Count // Add a SUM formula to calculate the total price column worksheet.SetCellValue(dataRowCount + 2, 3, $"=SUM(D2:D{dataRowCount + 1})"); // Create a summary worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); summarySheet.SetCellValue(0, 0, "Total Products"); summarySheet.SetCellValue(0, 1, dataRowCount); // Save in multiple formats workbook.SaveAs("export.xlsx"); workbook.SaveAsCsv("export.csv"); workbook.SaveAsJson("export.json"); workbook.SaveAsXml("export.xml"); Console.WriteLine("Multi-format export completed!"); $vbLabelText $csharpLabel IronXL支援 Excel 公式,可讓您直接向匯出的檔案新增計算。 上面的範例新增了一個公式,用於自動計算列總計。 建立多個工作表有助於組織複雜的匯出內容,例如將詳細資料與匯總資訊分開。 請造訪IronXL 的操作指南,以了解如何建立 Excel 檔案以獲得更多工作表管理模式。 格式的靈活性對於整合場景尤其有價值。 雖然 XLSX 是 Excel 檔案的標準格式,但CSV 匯出提供了與資料庫系統和舊版應用程式的通用相容性。 JSON 和 XML 格式便於與 Web 服務和 API 進行資料交換。您也可以開啟現有工作簿,將匯出的資料追加到現有電子表格中,而無需每次都建立新檔案。 不同匯出格式有何不同? IronXL如何簡化您的 C# 開發工作流程? IronXL 的主要優點在於無需依賴 Microsoft Office。 無論部署在開發人員工作站、客戶機器或 Docker 容器中,您的應用程式都能穩定運作。 這種獨立性簡化了部署,並減少了與 Office 版本和安裝相關的支援問題。 微軟的Open XML SDK是另一個無需 Office 的替代方案,但與 IronXL 的高級 API 相比,它需要編寫更多的樣板程式碼。 有關跨平台.NET 10 開發指南, Microsoft .NET文件涵蓋了平台目標、部署模型和 Windows Forms 的具體內容。 該程式庫的 API 設計以簡潔性為優先原則。 與 Interop 基於 COM 的方法需要謹慎地處理物件不同, IronXL使用標準的.NET模式,這對 C# 開發人員來說感覺很自然。 跨平台支援意味著為 Windows Forms 建置的匯出功能可以在執行於 Linux 伺服器上的ASP.NET Core應用程式中重複使用。 如需全面了解可用功能,請造訪IronXL功能頁面。 您也可以從 Excel 匯入數據,以便在匯出之前預先填入 DataGridView,從而建立往返工作流程,使用者可以載入 Excel 數據,在網格中編輯數據,然後將結果匯出回 Excel。 讀取Excel檔案指南詳細介紹了導入部分。 處理敏感資料時, IronXL支援工作簿級和工作表級密碼保護。 IronXL文件涵蓋了在分發之前必須保護匯出文件的安全選項。 生產用途有哪些授權選項? IronXL在生產環境中部署需要有效的許可證金鑰。 您可以先申請免費試用許可證,解鎖所有功能進行評估。 請查看IronXL授權頁面,以了解從單一開發者授權到無限企業部署的各種授權等級的完整詳細資訊。 在使用IronXL 的任何功能之前,請先在您的應用程式中套用許可證金鑰: IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"; IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"; $vbLabelText $csharpLabel 這一行程式碼會在應用程式進程的整個生命週期內啟動該程式庫。 對於 Web 應用程式和服務,請在啟動時設定許可證密鑰,以便所有請求都能享受到完整的功能集,而不會出現浮水印。 為什麼您應該選擇IronXL來進行 C# 中的 Excel 匯出? 使用IronXL將 DataGridView 資料匯出到 Excel 變得非常簡單。 該程式庫消除了傳統的互通複雜性,同時提供了專業的格式化功能和多種匯出格式。 它採用容器友善架構,依賴項極少,並支援跨平台,使其成為現代 DevOps 工作流程的理想選擇。 IronXL主頁是探索完整庫的起點。 無論是建置微服務、部署到 Kubernetes 集群,還是運行無伺服器函數, IronXL都能無縫整合到 CI/CD 管道中。 匯出 Excel 操作指南提供了不同匯出場景的更多模式,而開啟工作簿指南則涵蓋了讀取和修改現有文件。 首先申請免費試用許可證,體驗全部功能。 IronXL教學和程式碼範例可協助您快速實現可用於生產環境的解決方案。 我們提供靈活的授權選項,滿足您的部署需求,從個人開發者授權到無限企業部署,應有盡有。 對於任何入門問題, IronXL文件中心提供 API 參考、程式碼範例和故障排除指南。 常見問題解答 使用IronXL將DataGridView匯出到Excel的好處是什麼? IronXL通過消除Microsoft Office Interop的需求來簡化將DataGridView內容匯出到Excel的過程,減少了部署的複雜性並去除依賴要求。 IronXL如何改進應用程式分發? IronXL通過不需要Microsoft Office Interop來減少應用程式分發的複雜性,因為Office Interop通常會附帶額外的依賴性,這會使部署變得複雜。 IronXL可以在VB.NET中匯出DataGridView數據嗎? 是的,IronXL提供了一個實用的解決方案,用於在VB.NET中將DataGridView數據匯出到Excel,使其更容易在商業應用中管理數據。 將DataGridView匯出到Excel的常見用例是什麼? 常見的用例包括生成報告,創建數據備份,並在商業環境中與利益相關者分享信息。 IronXL需要系統上安裝Microsoft Excel嗎? 不,IronXL不需要安裝Microsoft Excel,因為它獨立於Excel運行,簡化了部署過程。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多 更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多 更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多 如何在C#中使用IronXL打開Excel檔案。如何在.NET中使用IronXL寫入C...
更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多
更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多
更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多