changwen313 2017-09-14 09:47 采纳率: 100%
浏览 1186
已采纳

.net gridview导出成excel汉字是乱码问题

.net gridview导出成excel,两个功能界面,代码是复制过来的,但是导出的excel一个汉字是乱码,一个正常,是哪里的问题呀?
代码如下,请指教
protected void btnExcel_Click(object sender, EventArgs e)
{
DateTime dt = System.DateTime.Now;
string str = dt.ToString("yyyyMMddhhmmss");
str = str + "-汇总.xls";

    selectFlag = 1;
    GridView2.AllowPaging = false;

    SelectGetData();
    GridViewToExcel(GridView2, "application/ms-excel", str);


}

/// <summary>
/// 将网格数据导出到Excel
/// </summary>
/// <param name="ctrl">网格名称(如GridView1)</param>
/// <param name="FileType">要导出的文件类型(Excel:application/ms-excel)</param>
/// <param name="FileName">要保存的文件名</param>
public static void GridViewToExcel(Control ctrl, string FileType, string FileName)
{
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.Buffer = false;
    HttpContext.Current.Response.Charset = "UTF-8";
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");//注意编码
    HttpContext.Current.Response.AppendHeader("Content-Disposition",
       "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
    //HttpContext.Current.Response.AddHeader(
    // "content-disposition", string.Format("attachment; filename={0}", FileName));                                     
    // HttpContext.Current.Response.ContentType = FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword 
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=/text/html; charset=UTF-8/>");
    ctrl.Page.EnableViewState = false;
    StringWriter tw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    ctrl.RenderControl(hw);
    HttpContext.Current.Response.Write(tw.ToString());
    HttpContext.Current.Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{

}


protected void btncancel_Click(object sender, EventArgs e)
{
    Response.Redirect("content.aspx");
}
  • 写回答

2条回答

  • 白萝卜。 2017-09-14 10:08
    关注

    这就是转码的问题,下面是答案。
    https://q.cnblogs.com/q/60881/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码