刘刚博客

导出到Excel并且取消默认的科学计算法

 导出Excel的代码很多,其中这种最简单:

 protected void btnDCAll_Click(object sender, EventArgs e)
        {
            string DataString = DateTime.Now.ToString("yyyyMMddHHmmss");//已当前年月日时分秒做为文件名
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + DataString + ".xls");
                       Response.ContentEncoding = System.Text.Encoding.UTF7;
            Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            this.GridViewAll.RenderControl(oHtmlTextWriter);//GridViewAll是GridView的名字,也可以放到一个Table中或是DataTable中
            Response.Output.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();
        }

 

 public override void VerifyRenderingInServerForm(Control control)
        {
        }

导出之后,如果数据比较多,会遇到科学计数法问题

解决的方法是:

  protected void GridViewAll_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                    e.Row.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");//你所需要处理的列

                    //或所有的列

                     for (int i = 0; i < e.Row.Cells.Count; i++)
                     {
                           e.Row.Cells[i].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
                     }

            }

       }

 
 
posted @ 2016-10-27 09:27  Future.Net博客  阅读(785)  评论(0编辑  收藏  举报