急,急,急,导入excel出现乱码问题??
public virtual void ExportToExcel(DataTable dt)
{
System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
dg.DataSource = dt.DefaultView;
dg.DataBind();
Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
//'从Content-Type header中除去charset设置
Response.Charset = "utf-8";
//'关闭ViewState
this.EnableViewState=false;
System.IO.StringWriter tw=new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw=new System.Web.UI.HtmlTextWriter(tw);
dg.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}
这是我写的将datatable中的数据导入到Excel中,但出现了乱玛,望高手指教啊??
------解决方案-------------------- excel单元格设置的问题 右击单元格, 选择"设置单元格格式" , 单元格格式下的"数字" - 选为"数值"
------解决方案--------------------Response默认为utf=8将其修改为gb2312应该就可以了。
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");//保证文件名为中文不为乱码(当然"另存为"时也不为乱码)
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//保证输出中文内容不为乱码。
------解决方案--------------------你有没有删除你下面代码啊?
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
//'从Content-Type header中除去charset设置
Response.Charset = "utf-8";
------解决方案--------------------参考:http://blog.csdn.net/gisfarmer/archive/2009/01/09/3738959.aspx
------解决方案--------------------Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.ContentType = "application/ms-excel";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.GridView1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
用utf7的话 word2003之前的版本就不会乱码了,但是文件非常大。
用utf8在word2003可能是乱码,但是用2008打开是ok的。
这个东西我也没总结出什么规律来,就是换来换去基本就完事了。
------解决方案--------------------把 utf-8 改成 utf-7
------解决方案--------------------<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312"/>
配置文件加这个
然后导出的chraset也设置为gb2312
------解决方案-------------------- Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("文件名", System.Text.Encoding.UTF8) + ".xls");//这样的话,可以设置文件名为中文,且文件名不会乱码。其实就是将汉字转换成UTF8
------解决方案--------------------你导入的时候没有设置excel格式吧?如果没有设置的话,会把你的所有数值都改成科学技术法,建议在导的时候设置下