2011-09-23 22 views
0

我有一個gridview和一些嵌套的gridview,當我嘗試導出gridview數據到Excel我得到下載整個網頁,我相信它是因爲嵌套的gridviews。如何導出到Excel父級和嵌套的GridView數據?

如何將父級和嵌套的gridview數據導出到Excel工作表中?

我用下面的代碼導出到Excel

  gvExportToExcel.DataSource = objDs; 
      gvExportToExcel.DataBind();   
      System.Web.HttpContext curContext = System.Web.HttpContext.Current; 
      System.IO.StringWriter strWriter = null; 
      System.Web.UI.HtmlTextWriter htmlWriter = null;      
      curContext.Response.Clear(); 
      curContext.Response.Buffer = true; 
      curContext.Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("SearchSubmissionResult", System.Text.Encoding.UTF8) + ".xls"); 
      curContext.Response.ContentType = "application/vnd.ms-excel"; 
      curContext.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"); 
      strWriter = new System.IO.StringWriter(); 
      htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); 
      this.ClearControls(gvExportToExcel); 
      gvExportToExcel.RenderControl(htmlWriter); 
      curContext.Response.Write(strWriter.ToString()); 
      curContext.Response.End();     

回答

0

用以下代碼清除了此問題。

   //Clear the controls inside the parent grid-view before render. 

       gvExportToExcel.DataSource = objDs; 
       gvExportToExcel.DataBind();   
       System.Web.HttpContext curContext = System.Web.HttpContext.Current; 
       System.IO.StringWriter strWriter = null; 
       System.Web.UI.HtmlTextWriter htmlWriter = null;      
       curContext.Response.Clear(); 
       curContext.Response.Buffer = true; 
       curContext.Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("SearchSubmissionResult", System.Text.Encoding.UTF8) + ".xls"); 
       curContext.Response.ContentType = "application/vnd.ms-excel"; 
       curContext.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"); 
       strWriter = new System.IO.StringWriter(); 
       htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); 
       this.ClearControls(gvExportToExcel); 
       gvExportToExcel.RenderControl(htmlWriter); 
       curContext.Response.Write(strWriter.ToString()); 
       curContext.Response.End(); 

//Clear method. 

private void ClearControls(Control control) 
    { 
     try 
     { 
      for (int i = control.Controls.Count - 1; i >= 0; i--) 
      { 
       ClearControls(control.Controls[i]); 
      } 
      if (!(control is TableCell)) 
      { 
       if (control.GetType().GetProperty("SelectedItem") != null) 
       { 
        LiteralControl literal = new LiteralControl(); 
        control.Parent.Controls.Add(literal); 
        try 
        { 
         literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control, null); 
        } 
        catch 
        { 
        } 
        control.Parent.Controls.Remove(control); 
       } 
       else 
        if (control.GetType().GetProperty("Text") != null) 
        { 
         LiteralControl literal = new LiteralControl(); 
         control.Parent.Controls.Add(literal); 
         literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control, null); 
         control.Parent.Controls.Remove(control); 
        } 
      } 
     } 
     catch (Exception ee) 
     { 
      lblError.Visible = true; 
      lblError.Text = ee.Message; 
     } 
     return; 
    } 
0

反覆調整Rows收集GridView和寫入數據到Excel文件(通過OLEDB或Office互操作)。

+0

您能否提供一些代碼示例。我使用以下內容導出到Excel。 – Roshe

+0

@Nilaa:你能指定你用來填充GridView的數據源(List,DataTable,SqlDataSource等)嗎? – adatapost

相關問題