ASP.NET GridView导出Excel

导出GridView时候没有用控件,直接用流。
在多个地方需要导出Excel,出现一个问题,有的地方导出的中文正常,但是有的地方导出的中文会出现乱码的情况。查找网上相关资料,可能问题发现是编码问题。我原来输出流字符集用的是Encoding.Default,将输出流字符集改成UTF-8仍然会有问题。
查找资料发现在导出的时候加上如下代码可解决问题:

Response.Write(“<meta http-equiv=Content-Type content=text/html;charset=GB2312>”);

完整代码如下:

public static void Export(Page page, GridView gv, string fileName)
{
  page.Response.Buffer = true;
  page.Response.Clear();
  page.Response.ClearContent();
  page.Response.ClearHeaders();
  page.Response.Charset = “GB2312″;
  page.Response.ContentEncoding = System.Text.Encoding.GetEncoding(“GB2312″);
  page.Response.AddHeader(“Content-Disposition”, “attachment;filename=”+fileName+”.xls”);
  page.Response.Write(“<meta http-equiv=Content-Type content=text/html;charset=GB2312>”);
  page.Response.ContentType = “application/excel”;
  System.IO.StringWriter sw = new System.IO.StringWriter();
  HtmlTextWriter htw = new HtmlTextWriter(sw);
  gv.RenderControl(htw);
  page.Response.Write(sw.ToString());
  page.Response.End();
}

 

posted @ 2015-02-11 11:50  Beta3.0  阅读(215)  评论(0编辑  收藏  举报