gridview 导出excel代码,以及关于乱码问题

        /// <summary>
        /// 导出Excel方法
        /// 作者:王海龙
        /// 日期:2011年4月26日16:43:33
        /// </summary>
        /// <param name="FileType">文件类型:application/ms-excel</param>
        /// <param name="FileName">文件名字</param>
        /// <param name="gridview"></param>
        public static void ExportToExcel(this Page _page, string FileType, string FileName, GridView gridview)
        {
            _page.Response.Clear();
            _page.Response.Buffer = true;
            _page.Response.Charset = "utf-8";
            _page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
             _page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
            _page.Response.ContentType = FileType;

    ////这行很重要,是解决乱码的关键之所在。
            _page.Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");  

            _page.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            gridview.RenderControl(hw);
            _page.Response.Output.Write(tw.ToString());
            _page.Response.Flush();
            _page.Response.End();
        }

最初尝试各种办法,换各种编码,偶尔还是有gridview会出现乱码。原因是各个gridview的stream不一样,编码或许会出现问题。

最终还是靠加粗的那行代码,解决了问题。

posted @ 2011-05-19 17:27  王海龙(Heaven)  阅读(450)  评论(0编辑  收藏  举报