65.9K
CodeProject 正在变化。 阅读更多。
Home

将 GridView 记录导出到 Excel

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7625

在本文中,我们将学习和理解如何在 Web 应用程序中将 GridView 数据导出到 Excel 文件。在实际应用中,

在本文,我们将学习和理解如何在 Web 应用程序中将 GridView 数据导出到 Excel 文件。正如在实时编程中,我们经常生成网格格式的报告以供用户查看。

例如

  1. 本月购买的商品清单
  2. 已发送短信的报告。
  3. 邀请报告等。用户可能希望将此列表保存以供将来在 Excel 格式中使用。

必备组件

  1. 要查看 Excel 工作簿文件的内容,您必须安装 Microsoft Excel(单独或与 MS-Office 一起安装),才能在您的系统中查看导出的文件。
  2. 必须在系统上安装 Microsoft Visual Studio (VS) 才能进行开发。

让我们开始在 VS2008 中创建一个应用程序(您也可以使用 VS2005 或 VS2010)

我们将遵循以下步骤。

  1. 在 VS2008 中创建一个新项目,并将其命名为 C# 类别中的“ExporttoExcel”。
  2. 将一个 gridview 放置在 default.aspx 页面上,并将其重命名为 grdtoexport
  3. 创建一个将绑定网格的 DataTable。
  4. 放置一个将网格导出到 Excel 格式的按钮。

代码

protected void Page_Load(object sender, EventArgs e)
{
 //creating a table for the grid use namespace System.Data;
 DataTable  dt = new DataTable ();
 //adding columns to the datatale
 try
 {
 dt.Columns.Add("Srno");
 dt.Columns.Add("Name");
 }
 catch { }
 //adding values to the datatable
 for (int i = 1; i <= 10; i++) 
 {
 DataRow dr = dt.NewRow();
 dr[0] = i;
 dr[1] = "Meetu Choudhary " + i.ToString();
 dt.Rows.Add(dr);
 }
 //binding data table to the grid 
 grdtoexport.DataSource = dt;
 grdtoexport.DataBind();
}

编写一个 ExportToExcel 类

  using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;


namespace ExportToExcel
{
 public class ExportToExcel
 {
 public ExportToExcel()
 {
 }
 public void ExportGridView(GridView GridView1, String strFileName)
 {
 PrepareGridViewForExport(GridView1);
 HttpContext.Current.Response.ClearContent();
 HttpContext.Current.Response.Buffer = true;
 HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + strFileName);
 HttpContext.Current.Response.ContentType = "application/ms-excel";
 HttpContext.Current.Response.Charset = "";
 StringWriter sw = new StringWriter();
 HtmlTextWriter htw = new HtmlTextWriter(sw);
 GridView1.RenderControl(htw);
 HttpContext.Current.Response.Write(sw.ToString());
 HttpContext.Current.Response.End();
 }
 
 private void PrepareGridViewForExport(Control gv)
 {
 LinkButton lb = new LinkButton();
 Literal l = new Literal();
 string name = String.Empty;
 for (int i = 0; i < gv.Controls.Count; i++)
 {
 if (gv.Controls[i].GetType() == typeof(LinkButton)) //Link Button Text property
 {
 l.Text = (gv.Controls[i] as LinkButton).Text;
 gv.Controls.Remove(gv.Controls[i]);
 gv.Controls.AddAt(i, l);
 }
 else if (gv.Controls[i].GetType() == typeof(DropDownList))
 {
 l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text; //Drop down Selected Text
 gv.Controls.Remove(gv.Controls[i]);
 gv.Controls.AddAt(i, l);
 }
 else if (gv.Controls[i].GetType() == typeof(CheckBox)) //Convert Check Box to True and False
 {
 l.Text = (gv.Controls[i] as CheckBox).Checked ? "True" : "False";
 gv.Controls.Remove(gv.Controls[i]);
 gv.Controls.AddAt(i, l);
 }
 if (gv.Controls[i].HasControls())
 {
 PrepareGridViewForExport(gv.Controls[i]);
 }
 }
 }
 }
}

 

在按钮单击时调用该函数进行导出

protected void btnexport_Click(object sender, EventArgs e)
{
 ExportToExcel ex = new ExportToExcel();
 ex.ExportGridView(grdtoexport, "Client.xls"); 
}

 

您可以从这里下载代码


问候,Meetu Choudhary
Microsoft MVP-ASP/ASP.NET

MsDnM 我的论坛 我的博客

原文

 

© . All rights reserved.