我的程序是B/S架构,基本情况是,单击【查询】按钮时,
用前台控件table显示数据,然后将table中的数据导出到EXCEL。现在的问题是,单击【Excel导出】按钮之后,导出的只有之前写好的表头,
而动态生成的表格行数据并没有导出到excel中。请问这是怎么个情况?恳请高手指点指点,谢谢!基本代码如下:protected void Button1_Click(object sender, EventArgs e)
{
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
        HttpContext.Current.Response.ContentType = "application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
        this.tbData.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        this.Button2_Click(sender, e);
        this.tbData.RenderControl(hw);
        this.tbData.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }

解决方案 »

  1.   

    this.tbData.RenderControl(hw); ,为什么有两个?
    调试时跟踪下,看看有没有在tbData在RenderControl时有没有绑定数据。
      

  2.   

    以前用gridview控件导出过Exel表,没用过table。顶了!
      

  3.   

    protected void Button1_Click(object sender, EventArgs e) 
        { 
            Export("application/ms-excel", "报表.xls"); 
        }     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(); 
        } 
      

  4.   

    回复1楼的:
     
      调试发现,this.tbData.RenderControl(hw); 中的table(tbData)只有之前写的表格行,
    而没有数据,这是为什么啊?但是前台的table是有数据显示的啊???
      

  5.   

    protected void btnExportExcel_Click(object sender, EventArgs e)
            {
                List<Entity.NewsLetter> listLetter = BLL.NewsLetter.NewsLetterInstance.GetLetterList();
                using (StreamWriter sw = new StreamWriter(Server.MapPath("NewsLetter.xls")))
                {
                    for (int i = 0; i < listLetter.Count; i++)
                    {
                        sw.WriteLine(listLetter[i].Email);
                    }
                    sw.Flush();
                }
                Response.Redirect("NewsLetter.xls");
            }
      

  6.   

    你的tbData的数据绑定事件比你的this.tbData.RenderControl(hw)晚执行,页面上有数据是因为tbData又Render了
      

  7.   

    楼主 参考http://topic.csdn.net/t/20040906/12/3344097.html