注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 负载均衡技术沙龙问答汇集
 帮助

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


2008-04-07 20:40:56
 标签:.net asp DataGrid 内容   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dotnet.blog.51cto.com/272325/70260
在HTML页面中就一个按钮.
//////<asp:button id="Button1" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 8px" runat="server"
     Text="导出">
  ///</asp:button>
和 一个DataGrid
///<asp:datagrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 0px; POSITION: absolute; TOP: 40px" runat="server">
  ///</asp: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);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  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
 }

本文出自 “Dongxu” 博客,请务必保留此出处http://dotnet.blog.51cto.com/272325/70260





    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: