ASP.net中将DataGrid的内容导出为excel文件


  本文标签:asp.net DataGrid excel

  在HTML页面中就一个按钮  。

  

  //////
和 一个DataGrid
///
aspx.cs 文件的代码是:
////public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button1;
private   void   Page_Load(object   sender,   System.EventArgs   e)
{

  DataGrid1.DataSource=CreateDataSource();
DataGrid1.DataBind();
//   在此处放置用户代码以初始化页面
}

  ICollection   CreateDataSource()
{
DataTable   dt   =   new   DataTable();
DataRow   dr;
dt.Columns.Add(new   DataColumn("身份证号码",   typeof(string)));
dt.Columns.Add(new   DataColumn("图书单价",typeof(decimal)));
dt.Columns.Add(new   DataColumn("购买数量",typeof(Int32)));
dt.Columns.Add(new   DataColumn("总价格",typeof(decimal)));
for   (int   i   =   0;   i   <   30;   i++)
{
dr   =   dt.NewRow();
dr[0]   =   "123456789123456789";
dr[1]   =   100   *   i   /3.0;
dr[2]   =   i   +   5;
dr[3]   =   (decimal)dr[1]   *   (Int32)dr[2];
dt.Rows.Add(dr);
}
DataView   dv   =   new   DataView(dt);
return   dv;
}

  private   void   Button1_Click(object   sender,   System.EventArgs   e)
{
Response.Clear();
Response.Buffer=   true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

  //设置输出流为简体中文
Response.ContentType   =   "application/ms-excel"; //设置输出文件类型为excel文件  。
this.EnableViewState   =   false;
System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo

  ("ZH-CN",true);
System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter

  (oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter); // 在这里设置保存那个数据源的数据.
Response.Write(oStringWriter.ToString());
Response.End();
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.

  DataGridItemEventArgs e)  //这个设置显示的格式
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.

  AlternatingItem)
{
e.Item.Cells[0].Attributes.Add("style","vnd.ms-excel.numberformat:@");
e.Item.Cells[3].Attributes.Add("style","vnd.ms-excel.numberformat:¥#,###.00");
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的  。
//
InitializeComponent();
base.OnInit(e);
}

  ///


/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容  。
///

private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.

  DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}