网站链接: 我爱捣鼓
当前位置: 首页 > web开发  > Asp.net/C#

彻底解决gridview导出excel文档中文乱码的问题

2021/7/12 20:29:08

这两天给系统添加一个将查询结果导出excel文档的功能,三两下就搞定了,可是在测试的时候导出内容有汉字的部分会变成乱码,而且还很随机,这次导出正常,下次有可能就变成乱码了,于是带着这个奇怪的问题,找解决办法,有说web.config中<globalization fileEncoding=&…

这两天给系统添加一个将查询结果导出excel文档的功能,三两下就搞定了,可是在测试的时候导出内容有汉字的部分会变成乱码,而且还很随机,这次导出正常,下次有可能就变成乱码了,于是带着这个奇怪的问题,找解决办法,有说web.config中<globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312"/>和导出excel设置编码方式不一致造成的,可是改了还是没有解决。

于是又开启了漫长的解决问题的路程,就在准备放弃的时候,看到了一篇文章,其中提到"gridview导出excel的文档其实也算是一个html文件",于是我就在想,html文件一般出现乱码的话,应该怎么解决呢?对,就是设置meta的charset,就像这样<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">,然后我就向导出excel文档的代码中添加了对应的代码,让我欣喜的是,问题竟然解决了!下面我们就来看看代码是如何实现的?

代码实现

    protected void Button3_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = false;
        Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", "p_w_upload;filename=pkmv_de.xls");
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.ContentType = "application/ms-excel";
        Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");//设置excle文档编码方式
        this.EnableViewState = false;
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
        GridView2.RenderControl(oHtmlTextWriter);
        Response.Write(oStringWriter.ToString());
        Response.End();
    }


      通过以上内容我们彻底解决gridview导出excel文档中文乱码的问题,不知道大家有什么更优的方案吗,如果有的话,记得分享给我哦,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • C#怎么获取文件夹里所有的图片文件?

    在实际的程序开发中,我们经常需要获取某个文件夹下的所有图片,用到了C#的DirectoryInfo、GetFiles等文件操作方法,具体实现如下://自定义一个结构public struct sFileInfo{ public string FileName; public DateTime FileCreateTime;}protected void Page_Load(…

    2021/3/4 21:48:01
  • c#实现日期时间与unix时间戳互相转换

    为什么使用时间戳?关于Unix时间戳,大概是这个意思,从1970年0时0分0秒开始到现在的秒数.使用它来获得的是一个INT值,储存在数据库里只要使用INT格式就可以了,方便数据库进行排序,搜索,而且比datetime格式更节省数据库空间。 /// <summary> /// Uni…

    2021/3/4 21:40:22