如题,导出Gridview到Excel,无法解决汉字文件名传递的问题,请指教,函数如下:
其中,
1、string FileName只能为英文,怎样为汉字?
2、Response.ContentType = FileType;好像没用?去掉也可以导出,private void Export(string FileType, string FileName)
    {
        Response.Clear();
        
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        
        Response.Charset = "gb2312";  //必须写,否则会有乱码
        Response.ContentEncoding = System.Text.Encoding.UTF7;  //必须写,否则会有乱码
        Response.ContentType = FileType;
       
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);        GridViewInfo.AllowPaging = false;
        //BindData();不分页后绑定数据刷新
        GridViewInfo.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
        GridViewInfo.AllowPaging = true;
        //BindData(); //重新绑定数据
    }

解决方案 »

  1.   

    还是用这种吧~~'转Excel
        Sub toExcel(ByVal p_dt As DataTable)        Dim mydg As New DataGrid
            mydg.DataSource = p_dt
            mydg.DataBind()
            Response.AppendHeader("Content-Disposition", "attachment;filename=E:\Excel.xls")
            Response.ContentEncoding = System.Text.Encoding.UTF8
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = "GB2312"
            Me.EnableViewState = False
            Dim tw As New System.IO.StringWriter
            Dim hw As New System.Web.UI.HtmlTextWriter(tw)
            mydg.RenderControl(hw)
            Response.Write(tw.ToString())
            Response.End()    End Sub
      

  2.   

    楼上误会我的意思了,Excel内容中文显示正确,只是中文文件名为乱码,即string FileName参数不能含有汉字!
      

  3.   


          Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); 
         //不是导出的excel文件名乱码是你自己把文件名编码了,是你用UrlEncode把文件名编码了
    用HttpUtility.UrlDecode把文件名解码即可
      

  4.   

     Response.AddHeader("Content-Disposition", "attachment;   filename=" + System.Web.HttpUtility.UrlEncode("文件名", System.Text.Encoding.UTF8) + ".xls");
      Response.ContentEncoding = System.Text.Encoding.UTF7;
    Response.ContentType = "application/ms-excel";
      

  5.   

    文件名解决了,但Excel文件里面的sheet1为乱码!如何解决?
      

  6.   

    直接保存成Excel,问题解决,只是先打开再保存时,文件名还是乱码
      

  7.   

    Response.ContentType 里 设置 utf-8
    ie page 格式得要是 utf-8
    meta data里设置 utf-8
      

  8.   

    Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); 
         //不是导出的excel文件名乱码是你自己把文件名编码了,是你用UrlEncode把文件名编码了
    用HttpUtility.UrlDecode把文件名解码即可这个用了。解决问题。感谢4楼的oo_2008。