asp.net中将DataGrid的内容导出为excel文件
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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 本文出自 51CTO.COM技术博客 |


xudongxu
博客统计信息
热门文章
最新评论
友情链接
