网站链接: 我爱捣鼓
当前位置: 首页 > 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)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • Visual Studio2010代码块区域折叠起来的快捷键CTRL+K+S

    加#region和#endregion的作用主要是 :可以将这块区域的代码折叠起来,便于查看。 快捷键 CTRL + K + S,选第二个。也可以点击鼠标右键选择‘外侧代码’找到它。 必须是成对出现。就像是一对括号。只是不会被编译。 通过以上内容我们知道了Visual S…

    2021/10/18 21:46:33
  • C#如何判断两个时间的大小?

    C#如何判断两个时间的大小? 其实很简单,我们可以通过C#的一个方法就能解决,下面我们就来说说这个方法。 C# 时间比较方法DateTime.Compare public static int Compare(DateTime t1,DateTime t2) 返回值类型:System.Int32 当结果<0时表…

    2021/10/15 21:42:07
  • 如果房东的猫知道这个她就不会再问今天是星期几了!

    房东的猫如果会敲代码,写个这么简单的小程序她就不会成天喊叫"今天是星期几"了。 /// <summary> /// 获得今天星期几的函数 /// </summary> /// <returns></returns> public string GetDayOfWeek(…

    2021/10/15 21:38:13
  • C#使用身份证号码判断用户是否未成年

    C#如何使用身份证号码来判断用户是否未成年,今天我们就来看看这个C#方法怎么写。 /// <summary> /// 使用身份证号码判断用户是否未成年 /// </summary> /// <param name="num"></param> /// <…

    2021/10/15 21:32:45