asp.net导出Excel乱码的原因及解决方法

复制代码 代码如下:

  protected void Excel_Click(object sender, EventArgs e)

  {

  Response.Charset = "UTF-8";

  Response.ClearContent();

  Response.Clear();

  Response.ContentEncoding = System.Text.Encoding.UTF8;

  Response.HeaderEncoding = System.Text.Encoding.UTF8;

  Response.AddHeader("content-disposition", "attachment; filename=MyExpress.xls");

  Response.ContentType = "application/excel";

  System.IO.StringWriter sw = new System.IO.StringWriter();

  HtmlTextWriter htw = new HtmlTextWriter(sw);

  // turn off paging

  GridView1.AllowPaging = false;

  dataBind();

  GridView1.RenderControl(htw);

  Response.Write(sw.ToString());

  Response.End();

  // turn the paging on again

  GridView1.AllowPaging = true;

  dataBind();

  }

  关键:

  

复制代码 代码如下:

  Response.Charset = "UTF-8";//添加编码格式

  Response.ClearContent();

  Response.Clear();

  Response.ContentEncoding = System.Text.Encoding.UTF8;//表格内容添加编码格式

  Response.HeaderEncoding = System.Text.Encoding.UTF8;//表头添加编码格式

  上边如果解决不了还可以用

  

复制代码 代码如下:

  Response.ClearContent();

  Response.Clear();

  Response.AddHeader("content-disposition", "attachment; filename=sumlate.xls");

  Response.Charset = "GB2312";

  Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

  Response.ContentType = "application/excel";

  System.IO.StringWriter sw = new System.IO.StringWriter();

  HtmlTextWriter htw = new HtmlTextWriter(sw);

  if (GridView2.Rows.Count > 0)

  {

  GridView2.RenderControl(htw);

  }

  else

  {

  GridView1.RenderControl(htw);

  }

  Response.Write(sw.ToString());

  Response.End();

  关键:

  

复制代码 代码如下:

  Response.Charset = "GB2312";

  Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

  注意观察,主要原因其实就是编码格式问题。

  现在就能防止导出时候乱码问题了