HQT

追求.NET 技术永无止境

导航

奇异怪事-DataGrid的数据导出Excel中文乱码

Posted on 2005-08-05 10:11  HQT  阅读(6280)  评论(19编辑  收藏  举报


DataGrid的数据导出到EXCEL提供用户下载,
此类文章已遍地都是,
而且也是要经常使用的,
今天遇到一怪事,我先按照正常的配置:
1, web.config中
            requestEncoding="GB2312"
            responseEncoding="GB2312"
2. 用最简单的办法导出:
private void ExportToExcel(DataGrid dg)
  {   
   Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); // 中文
   Response.AppendHeader("Content-Disposition", "attachment;filename=" + "result.xls"); //必要,做成下载文件

   // 如果要直接在浏览器中打开,把上行注释掉,换成下面这行
   //Response.ContentType = "application/vnd.ms-excel";   
   Response.Charset = ""; // 从Content-Type header中去除charset设置

   //关闭 ViewState
   this.EnableViewState = false ;
   System.IO.StringWriter tw = new System.IO.StringWriter();

   System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
   //获取control的HTML
   dg.RenderControl(hw);
   //把HTML写回浏览器
   Response.Write(tw.ToString());
   Response.End();
  }

于是奇怪的事出现了,
两个不同的页面,一个页面里面这样导出,中文显示正常,而另一页却不正常。
于是我试着在不正常的页面中对DataGrid属性进行适当的更改,
发现 当我把 AutoGenerateColumns 属性设置为 True 时,中文显示居然正常。。。
实为不解。。。。
可是这样做始终觉得不妥。。。
经人提点,将 Response.ContentEncoding 改为 utf-8 国际通用格式后,便都可以了。
不过上面的怪事仍无法理解,
不知是否有人帮偶指点下???
TKS先。