日期:2014-05-18  浏览次数:21040 次

急,急,急,导入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格式吧?如果没有设置的话,会把你的所有数值都改成科学技术法,建议在导的时候设置下