GridView导出为Excel乱码解决方案

GridView导出Excel经常会出现乱码,这里给出一个解决方案,记录下,备用。

 

///   <summary>
///  导出Excel(自定义编码)
///   </summary>
///   <param name="GridView1"></param>
///   <param name="title"></param>
public   static   void  ExportExcel(System.Web.UI.WebControls.GridView GridView1,  string  title,  string  encoding)
{
    
// 标题
     byte [] bTitle  =  System.Text.Encoding.GetEncoding(encoding).GetBytes(title  +   " <br><br> " );
    StringBuilder sb 
=   new  StringBuilder();
    sb.Append(System.Text.Encoding.GetEncoding(encoding).GetString(bTitle));

    
// 报表内容
    System.IO.StringWriter oStringWriter  =   new  System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter 
=   new  System.Web.UI.HtmlTextWriter(oStringWriter);
    GridView1.RenderControl(oHtmlTextWriter);
    
byte [] bContent  =  System.Text.Encoding.GetEncoding(encoding).GetBytes(oStringWriter.ToString());
    sb.Append(System.Text.Encoding.GetEncoding(encoding).GetString(bContent));

    
// 输出
    System.Web.HttpContext.Current.Response.Clear();
    System.Web.HttpContext.Current.Response.Buffer 
=   true ;
    System.Web.HttpContext.Current.Response.Charset 
=  encoding;
    System.Web.HttpContext.Current.Response.AppendHeader(
" Content-Disposition " " attachment;filename=FileName.xls " );
    System.Web.HttpContext.Current.Response.ContentEncoding 
=  System.Text.Encoding.GetEncoding(encoding);
    System.Web.HttpContext.Current.Response.HeaderEncoding 
=  System.Text.Encoding.GetEncoding(encoding);
    System.Web.HttpContext.Current.Response.ContentType 
=   " application/ms-excel " ;     // 设置输出文件类型为excel文件。 
    System.Web.HttpContext.Current.Response.Write( " <meta http-equiv=Content-Type content=\ " text / html; charset = " +encoding+ " \ "  > " );

    System.Web.HttpContext.Current.Response.Write(sb.ToString());
    System.Web.HttpContext.Current.Response.End();
}

 

 

转载于:https://www.cnblogs.com/liuxiaojun/archive/2010/09/16/gridview_export_excel.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值