做了一个按钮,将gridview中的数据导出保存为excel表格,具体程序如下Public Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        Response.Clear()
        Response.Buffer = True
        Response.Charset = "GB2312"
        Dim header As String = DropDownList1.Text.ToString
        Response.AppendHeader("Content-Disposition", "attachment;filename=aaa.xls")
        Response.ContentEncoding = System.Text.Encoding.UTF7
        Response.ContentType = "application/ms-excel"
        Dim oStringWriter As System.IO.StringWriter = New System.IO.StringWriter
        Dim oHtmlTextWriter As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter)
        Me.GridView1.RenderControl(oHtmlTextWriter)
        Response.Output.Write(oStringWriter.ToString)
        Response.Flush()
        Response.End()
    End Sub
其中,导出execl的标题我想做成参数可变类型的,我就把这一句Response.AppendHeader("Content-Disposition", "attachment;filename=aaa.xls")改成了Response.AppendHeader("Content-Disposition", "attachment;filename="+title+".xls")
其中title是一个string型的变量想要做到的就是导出execl的标题是根据情况变化的
但是
但是我这样做,导出的文件名却是乱码,而且连xsl文件格式都没了求助各位解释下为什么会是乱码,怎么解决也麻烦帮我解释下导出文件那段程序的原理,我没看明白怎么把数据从gridview弄出来的致谢

解决方案 »

  1.   

    Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8) + ".xls");
      

  2.   

    文件名是中文吧?Response.ContentEncoding = System.Text.Encoding.UTF7
    这句话改一下
    Response.ContentEncoding = System.Text.Encoding.UTF8
      

  3.   


    顶这个title里有中文吧。
      

  4.   

    问题的根源在数据库
    将所有字符型字段用nvarchar就可
      

  5.   


    title内有中文,怎么处理,怎么将字段用nvarchar??
      

  6.   

     Response.AppendHeader("Content-Disposition", "attachment;filename=aaa.xls")
    这句改下 Response.AppendHeader("Content-Disposition", "inline;filename=aaa.xls")这样试下,还有要utf8
      

  7.   

    已解决
    改成了
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(title, System.Text.Encoding.UTF8) + ".xls")谢谢各位ps: 一个新问题
       这是我导出的标题格式是 “中文字”+系统时间,例如“报表2010-11-20+13_37_51.xls”这里面怎么会有"+"号那?