kogu的博客

随手/随脚/随意/随性--男人要做自已喜欢的事情

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

用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象

其实要解决中文乱码很简单,设置一下字符集。如下:

                // 设置编码和附件格式 
                   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"/>

 

                // 返回客户端 
                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> 
        /// 把DataTable内容导出excel并返回客户端 
        /// </summary> 
        /// <param name="dgData">待导出的DataTable</param> 
        /// 创 建 人:陈文凯 
        /// 创建日期:2005年10月08日 
        /// 修 改 人: ranbolwb  修改导出中文乱码的问题
        /// 修改日期: 2012-05-29
        public static void DataTable2Excel(System.Data.DataTable dtData)
        {
            System.Web.UI.WebControls.DataGrid dgExport = null;
            // 当前对话 
            System.Web.HttpContext curContext = System.Web.HttpContext.Current;
            // IO用于导出并返回excel文件 
            System.IO.StringWriter strWriter = null;
            System.Web.UI.HtmlTextWriter htmlWriter = null;

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

                // 导出excel文件 
                strWriter = new System.IO.StringWriter();
                htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

                // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid 
                dgExport = new System.Web.UI.WebControls.DataGrid();
                dgExport.DataSource = dtData.DefaultView;
                dgExport.AllowPaging = false;
                dgExport.DataBind();

                // 返回客户端 
                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();
            }
        }


 

参考:http://www.cnblogs.com/cbcye/archive/2009/05/26/1490451.html

 

 

阅读更多
个人分类: excel C#
上一篇Asp.net中把DataTable或DataGrid导出为Excel
下一篇img标签中onerror用法及注意事项
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭