Current.Response.Charset   =   "UTF-8";   
Response.ContentEncoding   =   System.Text.Encoding.Default;   
Response.ContentType   =   "application/ms-excel";   
Response.AppendHeader("Content-Disposition","attachment;filename=myexcel.xls");     
System.IO.StringWriter   tw   =   new   System.IO.StringWriter();   
System.Web.UI.HtmlTextWriter   hw   =   new   System.Web.UI.HtmlTextWriter(tw);   
GridView1.RenderControl(hw); 
Response.Write(tw.ToString());   
Response.End(); 这段代码我就不多说了哈,网上多的是,我把这个页面设为启动页的时候,是可以导出excel的。但是如果不设为首页,比如说登录以后跳转到这个页面,就不可以导出了。
已经排除了重载VerifyRenderingInServerForm方法的问题,也排除了Response.End()引起的“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值”的问题,这个页面执行完以后就一闪而过。
查看Response.Headers属性说是iis集成管线什么的,貌似问题就在这啊,哪位知道的帮忙解答一下啊
开发环境vs2005,iis6.0(上面的集成管线不是在iis7才有的吗?)      

解决方案 »

  1.   

    你自己对比一下吧
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=out.xls");
            Response.ContentType = "application/ms-excel";
            this.EnableViewState = false;
            System.IO.StringWriter swOut = new System.IO.StringWriter();
            HtmlTextWriter hTw = new HtmlTextWriter(swOut);
            GridView1.RenderControl(hTw);
            Response.Write(swOut.ToString());
            Response.End();
      

  2.   

    private void Export(string FileType, string FileName) 
        { 
            Response.Charset = "GB2312"; 
            Response.ContentEncoding = System.Text.Encoding.UTF7; 
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); 
            Response.ContentType = FileType; 
            this.EnableViewState = false; 
            StringWriter tw = new StringWriter(); 
            HtmlTextWriter hw = new HtmlTextWriter(tw); 
            GridView1.RenderControl(hw); 
            Response.Write(tw.ToString()); 
            Response.End(); 
        } 
    单步跟踪看看