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先。