您的位置:首页 > 编程语言 > ASP

asp.net 导出excel 中文乱码解决方法 (转)

2014-07-24 15:42 796 查看
用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象,
其实要解决中文乱码很简单,设置一下字符集。如下:

// 设置编码和附件格式

curContext.Response.ContentType = "application/vnd.ms-excel";

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

curContext.Response.Charset = "gb2312";

// 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
curContext.Response.Charset = "gb2312";


另外,在输出的时候,最好加上以下语句:

<meta http-equiv="content-type" content="application/ms-excel; charset=gb2312"/>

[csharp] view plaincopyprint?

// 返回客户端

dgExport.RenderControl(htmlWriter);

curContext.Response.Clear();

curContext.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=gb2312\"/>" + strWriter.ToString());

curContext.Response.End();

// 返回客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Clear();
curContext.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=gb2312\"/>" + strWriter.ToString());
curContext.Response.End();

完整方法如下:

/// <summary>
2./// 把DataTable内容导出excel并返回客户端
3./// </summary>
4./// <param name="dgData">待导出的DataTable</param>
5./// 创 建 人:陈文凯
6./// 创建日期:2005年10月08日
7./// 修 改 人: ranbolwb  修改导出中文乱码的问题
8./// 修改日期: 2012-05-29
9.public static void DataTable2Excel(System.Data.DataTable dtData)
10.{
11.    System.Web.UI.WebControls.DataGrid dgExport = null;
12.    // 当前对话
13.    System.Web.HttpContext curContext = System.Web.HttpContext.Current;
14.    // IO用于导出并返回excel文件
15.    System.IO.StringWriter strWriter = null;
16.    System.Web.UI.HtmlTextWriter htmlWriter = null;
17.
18.    if (dtData != null)
19.    {
20.        // 设置编码和附件格式
21.        curContext.Response.ContentType = "application/vnd.ms-excel";
22.        curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
23.        curContext.Response.Charset = "gb2312";
24.
25.        // 导出excel文件
26.        strWriter = new System.IO.StringWriter();
27.        htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
28.
29.        // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
30.        dgExport = new System.Web.UI.WebControls.DataGrid();
31.        dgExport.DataSource = dtData.DefaultView;
32.        dgExport.AllowPaging = false;
33.        dgExport.DataBind();
34.
35.        // 返回客户端
36.        dgExport.RenderControl(htmlWriter);
37.        curContext.Response.Clear();
38.        curContext.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=gb2312\"/>" + strWriter.ToString());
39.        curContext.Response.End();
40.    }
41.}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: