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

原创 2012年05月29日 10:29:00

用我转载的上一篇文章 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

 

 

相关文章推荐

poi工具导出excel乱码问题的解决过程

  1.   遇到这个问题是2天前,当时在google搜搜的时候我给的关键词: java导出excel乱码在出现的N多页面中选出了几个页面进行了研究,主要的解决方案如下: a  在jsp页面头,加入中...

【Excel】java 导出Excel 中文文件名乱码不显示问题

在使用Java 导出Excel 等报表时,对于中文文件名,会出现不显示中文或者中午乱码的问题。此问题的解决方案比较简单,将要返回的中文文件名做iso-8859-1 转码即可。 【问题...

java-导出excel并解决乱码问题

技术 struts2+easyui(参考,主要解决编码和excel导出问题) 表单的设置 accept-charset="GBK" onsubmit="if(!!window.ActiveXOb...

Excel导入导出乱码问题

我们在使用函数将数据导出到excel,当打开excel文件时会出现乱码问题,如果选择用txt打开文件却正常。 这可能有种原因: 1.SAP本身不支持导出文件的格式类型,这样的话,SAP导出时可能导出...

php导出EXCEL出现乱码的终极解决方法

php导出excel是web开发中非常常见的需求。

php导出excel乱码

Code: header("Content-type: application/vnd.ms-excel;");   header("Content-Disposition:filenam...

poi生成excel文件中文乱码问题

2009-12-02 14:06:49|  分类: Java|举报|字号 订阅       利用POI生成excel文件,在本机Windows测试成功,发布到linu...

解决tableexport导出到excel中有关中文乱码的问题

tableexport中将table中的内容导出到excel,但如果table包含中文的话,导出的就是乱码,需要修改tableexport.js,修改后的tableexport.js如下,使用时,只需...

C#,Asp.NET 导入Excel,时间格式一串数字转换.

在Excel中.日期或者时间格式为:42093.6506944444 或者 0.650694444444444 大于0 表示有日期(2015-03-30),小于零则是时间(15:37) 在C# 导入读...

导出Execl 系列: web页面导出到Excel乱码解决

引言:  前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的:         HttpContext.Curre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net 导出excel 中文乱码解决方法
举报原因:
原因补充:

(最多只允许输入30个字)