.net2.0 DataGridView导出至Excel

    关于DataGridView导出至Excel的例子其实很多,但是俺今天还是要个贴出来see毕竟自己也遇到些问题解决了啊。好了 废话不说。Start!

   首先要写一个导出至Excel的方法:

     public  void ExcelExport(GridView   gdv)

    {

             Response.ClearContent();
              Response.Clear();
              Response.BufferOutput = true;
              Response.Charset = "UTF-8";   //这里设置UTF-8,要与页面的字符集统一编码
              Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");//要导出的文件名称
              Response.ContentEncoding = System.Text.Encoding.UTF7;
              Response.HeaderEncoding = System.Text.Encoding.UTF7;
              Response.ContentType = "application/excel";//要导出的文件类型
              EnableViewState = false;
              StringWriter sw = new StringWriter();
               HtmlTextWriter htw = new HtmlTextWriter(sw);

               gdv.RenderControl(htw);

               Response.Write(sw.ToString());

              Response.End();

      如果你的DateGridView设置了分页,但你要导出全部的数据,你就需要先将DateGridView的

      gdv.AllowPaging = false;  然后在绑定DateGridView数据方法

      最后在Respon.End()后面在设置gdv.AllowPanging=true;   在绑定DateGridView

      //必须重写此方法。否则会报“DateGridView的控件Ct00_ContentHoler_Gridvew 必须在具有runat=“server”的窗体标记中”

       public override void VerifyRenderingInServerForm(Control control)    

    {
        //base.VerifyRenderingInServerForm(control);
    }

    然后还需要在你的页面中设置EnableEventValidation="false"

      至此以上步骤即可导出至Excel。但是问题所在不是这里,是在我同一个页面,两个DateGridView,同样的数据,但是导出来的却是一个是乱码,一个不是乱码的,当时为这个很头痛,网上的许多方法都试过,像设置“<mate charset="UTF-8" >,或网上说的最多的是设置Response.ContentEncoding = System.Text.Encoding。Gb2312.” ,但是我们的项目是多国使用的,只能用UTF-8。于是 我就自己试着每个字符集C#中每个字符集去试,到最后使用到UTf-7的时候,哈哈,导出来不乱了。但是具体为什么utf-7我也不知道为什么。(知道的朋友可以发帖),最后我们项目组的Excel的导出都使用的这个方法,没有出现乱码。

      这是俺第一次自己写的文章,文笔不好,请大家见谅

 

 

 

  

posted @ 2009-06-24 19:40  杨歪歪→YY  阅读(752)  评论(1编辑  收藏  举报