1 public void ToExcel(System.Web.UI.Control ctl, string FileName) 2 { 3 HttpContext.Current.Response.Charset = "UTF-8"; 4 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default; 5 HttpContext.Current.Response.ContentType = "application/ms-excel"; 6 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls"); 7 ctl.Page.EnableViewState = false; 8 System.IO.StringWriter tw = new System.IO.StringWriter(); 9 HtmlTextWriter hw = new HtmlTextWriter(tw); 10 ctl.RenderControl(hw); 11 HttpContext.Current.Response.Write(tw.ToString()); 12 HttpContext.Current.Response.End(); 13 } 14 public override void VerifyRenderingInServerForm(Control control) 15 { 16 //base.VerifyRenderingInServerForm(control); 17 } 18 protected void myGridView_RowDataBound(object sender, GridViewRowEventArgs e) 19 { 20 if (e.Row.RowType == DataControlRowType.DataRow) 21 { 22 //e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//这里是将要导出到execl里的第一列格式化为字符类型。 23 //e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");//这里是格式化为货币类型。 24 e.Row.Cells[4].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); 25 //1) 文本:vnd.ms-excel.numberformat:@ 26 //2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 27 //3) 数字:vnd.ms-excel.numberformat:#,##0.00 28 //4) 货币:vnd.ms-excel.numberformat:¥#,##0.00 29 //5) 百分比:vnd.ms-excel.numberformat: #0.00% 30 } 31 }
以上只是部分格式,还有更多,可以打开Excel查看,如下图:
图一、Excel其它格式
由于我需要导出一串类似于"201304110093"这样的字符串,但导出Excel后,其格式竟然为"2.01304E+11",实在太无耻了~,于是我在Excel中一通乱试,终于发现,把储存格式调为上图那个自定义的"0"格式即一切正常,所以,嘿嘿,在代码中果断加入:
1 protected void gvAboveFiveList_RowDataBound(object sender, GridViewRowEventArgs e) 2 { 3 if (e.Row.RowType == DataControlRowType.DataRow) 4 { 5 //讓輸出的數字以自定義的0格式輸出 6 e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:0"); 7 } 8 }
好了,收工啦~~