使用 IronXL 將 GridView 匯出到 Excel 並設定格式(C#)。
使用 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);
}
}
}此範例建立了一個按鈕點擊處理程序,並帶有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 的格式設定難題變成了一個簡單的過程。 此函式庫可處理標題樣式、交替行顏色、條件格式和邊框-無需 Office 相依性。 我們希望本教學能幫助您在 .NET 應用程式中建立專業的 Excel 匯出檔案。
常見問題解答
如何使用 C# 將 GridView 資料匯出到 Excel?
您可以使用 IronXL 庫在 C# 中將 GridView 資料匯出到 Excel。它允許您以程式設計方式輕鬆建立 Excel 文件並匯出數據,包括格式和樣式。
為什麼我應該使用 IronXL 來匯出 GridView 資料?
IronXL 透過其直覺的 API 簡化了匯出 GridView 資料的過程,讓您可以輕鬆保持格式並套用樣式,而這在傳統方法中可能具有挑戰性。
IronXL在將GridView匯出到Excel時是否支援格式設定?
是的,IronXL 支援多種格式設定選項,包括字體、顏色和儲存格樣式,確保您匯出的 Excel 檔案看起來專業,並保持預期的設計。
我可以自訂從 GridView 資料生成的 Excel 檔案的外觀嗎?
IronXL 為 Excel 檔案提供了一系列自訂選項,可讓您在從 GridView 匯出時調整儲存格樣式、字體、顏色等,以滿足您的特定要求。
是否可以使用 IronXL 將大型 GridView 資料集匯出到 Excel?
IronXL 能夠有效率地處理大型資料集,確保您可以將大量的 GridView 資料匯出到 Excel 而不會出現效能問題。
與使用其他方法相比,使用 IronXL 將 GridView 資料匯出到 Excel 有哪些優點?
IronXL 提供了一種更精簡、更靈活的匯出 GridView 資料的方法,對格式化、自訂和處理大型資料集提供了強大的支持,使其優於許多其他方法。
將 GridView 匯出到 Excel 時如何保持資料完整性?
IronXL 透過在從 GridView 匯出到 Excel 的過程中準確轉換和保留資料類型和格式來確保資料完整性。
IronXL 能否從具有複雜結構的 GridView 控制項中匯出資料?
是的,IronXL 可以有效地處理和匯出具有複雜結構的 GridView 控制項中的數據,並在生成的 Excel 檔案中保持層次結構和格式。
IronXL可以將GridView資料匯出為哪些文件格式?
IronXL 主要將資料匯出為 Excel 格式(如 XLSX),但也支援其他格式(如 CSV),可根據您的需求提供靈活性。
IronXL 是否支援匯出具有條件格式的 GridView?
IronXL 支援條件格式設置,可讓您設定規則和樣式,以便在將 GridView 資料匯出至 Excel 時根據儲存格值動態調整。






