文件流形式导出为Excel的文件编码问题
2005-06-29 09:11
441 查看
文件流形式导出为Excel的文件编码问题
http://www.cnblogs.com/Anders/archive/2005/06/27/182128.html 选至 吹雪
今天作项目的时候遇到一个问题:
DataGrid内容导出为Excel文件有可能乱码。
描述如下:
简体中文系统中web.config文件设置了<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-cn" />
系统里面有a.aspx提供了一个Datagrid,和Button,点击Button的时候将Datagrid的内容导出为Excel。当a.aspx被不同页面调用的时候导出的excel文件有可能会乱码,但又不是全部情况都乱码。调试了半天也没有发现问题。
1string filename = "" ;
2 filename = DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
3 Response.Clear();
4 Response.Buffer= true;
5 Response.AppendHeader("Content-Disposition","attachment;filename=" + filename + ".xls");
6 Response.ContentType = "application/ms-excel";
7 this.EnableViewState = false;
8 System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-cn",true);
9 System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
10 System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
11 DataGrid_BudgetUsedList.RenderControl(oHtmlTextWriter);
12 Response.Write(oStringWriter.ToString());
13 Response.End();
14
最后发现是编码问题
1string filename = "" ;
2 filename = DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
3 Response.Clear();
4 Response.Buffer= true;
5 Response.AppendHeader("Content-Disposition","attachment;filename=" + filename + ".xls");
6 Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8"); //更改为Utf-8编码后正常
7 Response.ContentType = "application/ms-excel";
8 this.EnableViewState = false;
9 System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("zh-cn",true);
10 System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
11 System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
12 DataGrid_BudgetUsedList.RenderControl(oHtmlTextWriter);
13 Response.Write(oStringWriter.ToString());
14 Response.End();
15
设置ContentEncoding为UTF-8之后显示正常。
唉~受习惯思维影响,习惯性认为简体中文系统就应该是gb2312。有时候换一下思维问题也就解决了。
ps:系统使用Utf-8编码应该是最佳方案,但是有时候受一些东西的影响也只能使用GB2312了。
2005-06-27 17:06
相关文章推荐
- 文件流形式导出为Excel的文件编码问题
- 文件流形式导出为Excel的文件乱码问题
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- Java中以字符流形式操作文件中的编码问题
- Html 中表格导出生成excel文件,解决中文导出失败问题。
- 导出excel文件 解决科学计数法问题 datagridview导出字符串变数字问题
- ajax 导出文件( Excel, txt 等) 问题分析
- 关于实现ASP导出Excel文件开关可能会碰到的组件注册问题!
- 解决Excel打开UTF-8编码的CSV文件乱码的问题 推荐
- Java文件流 编码问题 - 读取文件时指定字符编码
- Java web中不同浏览器间导出Excel文件名称乱码问题解决方案
- 导出excel文件 解决科学计数法问题
- ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
- asp.net<Web版> ---GridView 数据导出到excel表,系列问题<一>---导出的Excel文件格式与文件扩展名指定的格式不一致
- poi操作excel导出是否修改模板文件内容的问题
- ajax 导出文件( Excel, txt 等) 问题分析
- 导出excel文件问题[WEB学习实例]
- ThinkPHP 3.2 PHPExcel 导入导出文件 第三方类库不能用问题解决
- Python读取Excel文件遇到的编码问题(pycharm)
- 如何解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题