Gridview导出为Excel的时候,中文文件名乱码,解决方法

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.IO;

/// <summary>
///ToExcel 的摘要说明
/// </summary>
public class Export
{
    public Export()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    /// <summary>
    /// 导出excel表格
    /// </summary>
    public static void SaveToExcel(System.Web.UI.Control ctl, string filename)
    {
        //清除客户端当前显示
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.Charset = "GB2312";
        //显示标头
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;   filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".xls");//这样的话,可以设置文件名为中文,且文件名不会乱码。其实就是将汉字转换成UTF8
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
        //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7;
        // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!

        HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。    
        StringWriter stringWrite = new System.IO.StringWriter();

        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        ctl.RenderControl(htmlWrite);
        HttpContext.Current.Response.Write(stringWrite.ToString());
        HttpContext.Current.Response.End();

        //HttpContext.Current.Response.Clear();
        //HttpContext.Current.Response.Buffer = true;
        //HttpContext.Current.Response.Charset = "utf-8";
        //HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(filename));
        //HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;//设置输出流为简体中文  
        //HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。    
        //this.EnableViewState = false;
        //System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
        //System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
        //System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        //ctl.RenderControl(oHtmlTextWriter);
        //HttpContext.Current.Response.Write(oStringWriter.ToString());
        //HttpContext.Current.Response.End();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值