IRONSOFTWAREHOME
USING IRONXL

using IronXL 將 C# 中的 DataGridView 匯出到 Excel

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

使用IronXL在C#中將DataGridView資料導出到Excel,無需依賴Microsoft Office,且提供容器友好的部署。 建立一個DataGridView單元格,並保存為XLSX格式,支持完整的格式化。

從Windows Forms DataGridView導出資料到Excel是商業應用中的常見需求。 無論是生成報告、建立資料備份,還是與利益相關者共享資訊,開發人員需要一個可靠的方式將GridView資料導出為Excel格式。 使用Microsoft Office Interop的傳統方法已經支持了這一需求,但它們伴隨著部署的複雜性和依賴要求,這可能會使應用程式的分發變得複雜。

本教程演示了使用IronXL在C#中導出DataGridView資料到Excel的實際範例,一個不需要安裝Microsoft Office的.NET程式庫。 您將探索如何實現一個乾淨且高效的導出解決方案,適用於不同的環境,包括雲平台和容器。 無論是部署到Azure還是運行在Docker容器中,IronXL都提供了DevOps團隊所需的部署靈活性。

在IronXL首頁展示C#程式碼範例,演示如何讀取無需Microsoft Office或Excel Interop的Excel文件,並具有語法高亮和NuGet下載統計。

為什麼將DataGridView導出到Excel很重要?

DataGridView控制對Windows Forms應用程式至關重要,顯示使用者每天交互的表格資料。 將此資料導出到Excel能讓使用者利用Excel強大的分析工具,建立演示,以及與可能無法存取應用程式的同事共享資料。 此C# Excel導出功能對於商業報告和資料分析工作流程至關重要。

使用Microsoft.Office.Interop.Excel的傳統導出方法需要在每台運行應用程式的計算機上安裝Excel。 這給部署帶來了挑戰,特別是在伺服器環境中或將應用程式分發給沒有Office授權的使用者時。 此外,如果不小心處理,Interop方法可能會出現記憶體洩漏和COM物件清理問題。 這些挑戰在部署到AWS Lambda或其他不宜安裝Office的無伺服器平台時尤為嚴重。

現代.NET應用程式需要更靈活的解決方案。 IronXL通過提供一個獨立的程式庫來應對這些挑戰,能夠生成Excel文件而不依賴於Microsoft Office。 這種方法確保了開發、測試和生產環境中的一致性功能,同時支持部署到容器和雲平台。

跨平台支持圖表展示.NET對多個版本的相容性(9, 8, 7, 6, Core, Standard, Framework),並顯示包括Windows、Linux、Mac、Docker、Azure和AWS在內的多平台圖標。

IronXL和Interop如何比較?

下表總結了IronXL和Microsoft Office Interop在Excel導出場景中的主要區別:

IronXL vs. Microsoft Office Interop for Excel Export
功能IronXLMicrosoft互操作
需要安裝Office
Linux / Docker支持
COM物件清理不需要手動,容易出錯
記憶體洩漏風險如果不釋放,風險高
雲 / 無伺服器部署支持不支持
導出格式(XLSX, CSV, JSON, XML)全部支持有限

您如何在C#項目中安裝IronXL?

在Visual Studio中打開套件管理器控制台,運行以下命令,或使用.NET CLI:

PM > Install-Package IronXL.Excel

終端輸出顯示在C#項目中成功安裝IronXL.Excel NuGet包及其依賴項

有關詳細的安裝選項,請參閱IronXL NuGet安裝指南或直接在NuGet.org上搜索該包。 一旦安裝完成,將using IronXL;新增到您的C#項目文件中,以存取該程式庫的Excel導出功能。 在部署到生產環境時,應用您的授權密鑰以啟用所有功能。 您可以獲得免費試用授權來評估IronXL再決定購買。

一個基本的DataGridView導出看起來如何?

下面的程式碼建立了一個示範Windows Forms應用程式,其中有一個DataGridView填充了資料,然後使用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!");

此程式碼演示了核心的導出功能。 DataGridView控件資料源。 當處理較大資料集時,考慮使用IronXL的DataSet導入和導出功能來提高性能。

導出迴圈遍歷DataGridView,使用行和列索引將標題和資料放入Excel單元格中。 IronXL文件涵蓋了更複雜場景的其他單元格寫入選項。 DataGridViews底部的空行,確保Excel輸出中沒有意外的空白行。

Windows Forms應用程式顯示一個填充了產品資料的DataGridView,包括產品ID、名稱、類別、價格和庫存列,下方有一個

Microsoft Excel電子表格顯示已導出的產品資料,包括產品ID、產品名稱、類別、價格和電子及計算機配件的庫存水平列。

如果您在基於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!");

這個增強版本將專業格式應用到導出的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!");

IronXL支持Excel公式,允許您直接向導出的文件中新增計算。 上面的範例新增了一個SUM公式,自動計算列總和。 建立多個工作表有助於組織複雜的導出,例如將詳細資料與摘要資訊分開。 存取IronXL如何建立Excel文件指南以獲得更多工作表管理模式。

格式靈活性在整合場景中特別有價值。 雖然XLSX是Excel文件的標準,CSV導出提供了與資料庫系統和舊應用程式的通用相容性。 JSON和XML格式促進了與Web服務和API的資料交換。您還可以打開現有工作簿以將導出的資料附加到現有電子表格中,而不是每次建立新文件。

不同的導出格式如何比較?

Excel電子表格顯示產品庫存與產品ID、名稱、類別、價格和庫存列,D9單元格中顯示1839.95的和公式結果。

Excel電子表格顯示一個

Excel電子表格顯示產品庫存資料,帶有ProductID、Product Name、Category、Price和Stock數量列,D9單元格中顯示1839.95的和。

JSON文件顯示產品資料,其中有產品ID、名稱、類別、價格和庫存字段,並在程式碼編輯器介面中顯示。

XML文件顯示導出的DataGridView資料,包含產品資訊,包括ID、名稱、類別、價格和庫存水平,組織在Sheet元素中。

IronXL如何簡化您的C#開發工作流程?

IronXL的主要優勢是消除了對Microsoft Office的依賴。 您的應用程式無論是在開發者工作站、客戶機還是Docker容器中部署都能一致運行。 這種獨立性簡化了部署並減少了與Office版本和安裝相關的支持問題。 來自Microsoft的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文件涵蓋了必須在分發之前保護的導出文件的安全選項。

Excel程式庫功能概述,顯示六個主要類別:建立、保存和導出、編輯工作簿、處理資料、保護您的工作簿和編輯版面選項。

生產使用的授權選項是什麼?

IronXL要求有效的授權密鑰才能進行生產部署。 您可以從免費試用授權開始,它解鎖了所有功能供評估。 查看IronXL授權頁面以獲取有關從單開發者授權到無限企業部署的完整細節。

在使用任何IronXL功能之前,在應用程式中應用授權密鑰:

IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

這一行激活整個應用程式過程的程式庫。 對於Web應用程式和服務,請在啟動期間設置授權密鑰,使所有請求受益於完整功能集,而無需水印。

為什麼您應該選擇IronXL進行Excel導出到C#?

使用IronXL將DataGridView資料導出到Excel變得簡單。 該程式庫消除了傳統Interop的復雜性,並提供專業格式功能和多種導出格式。 其容器友好的架構、最少的依賴性和跨平台支持使其非常適合現代DevOps工作流程。

IronXL首頁是探索完整程式庫的起點。 無論是構建微服務,還是部署到Kubernetes集群或運行無伺服器功能,IronXL都可以乾淨地整合到CI/CD管道中。 導出Excel指南提供了不同導出場景的附加模式,打開工作簿指南涵蓋了讀取和修改現有文件。

免費試用授權開始探索完整功能集。 IronXL教程和程式碼範例幫助您快速實施生產就緒的解決方案。 從適合您部署需求的靈活授權選項中選擇,從單個開發者授權到無限企業部署。 若有任何有關入門的問題,IronXL文件中心提供API參考、程式碼範例和疑難排解指南。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預約您的免費即時演示
Booking Badge

全球數百萬工程師的信賴

Iron Software的客戶標誌
獲得無義務諮詢
填寫以下表格或電郵sales@ironsoftware.com
您的資料將始終保密。
全球數百萬工程師的信賴
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立