2013-04-08 114 views
0

將數據傳輸到ASP.NET中的Excel工作表網格視圖;如何解決這類問題 錯誤是將數據從gridview導出到ASP.NET中的Excel

Control 'ContentPlaceHolder1_gvdetails' of type 'GridView' must be placed inside a form tag with runat=server. 

這是我的代碼:

Response.ClearContent(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", 
    "Customers.xls")); 
    Response.ContentType = "application/ms-excel"; 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 
    gvdetails.AllowPaging = false; gvdetails.DataBind(); 
    gvdetails.HeaderRow.Style.Add("background-color", "#FFFFFF"); 
    gvdetails.RenderControl(htw); 
    Response.Write(sw.ToString()); 
    Response.End(); 
+0

什麼是您所遇到截至目前確切的問題? – pordi 2013-04-08 08:24:32

+0

此代碼在excel表格中未顯示空白excel表單數據如何在excel表單中加載網格視圖數據幫助我 – 2013-04-08 09:12:06

回答

2

我不知道什麼是你的代碼錯誤,但你可以使用下面的代碼:

using System; 
using System.Data; 
using System.IO; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace Whatever 
{ 
/// 

/// This class provides a method to write a dataset to the HttpResponse as 
/// an excel file. 
/// 

public class ExcelExport 
{ 
    public static void ExportDataSetToExcel(DataSet ds, string filename) 
    { 
    HttpResponse response = HttpContext.Current.Response; 

    // first let's clean up the response.object 
    response.Clear(); 
    response.Charset = ""; 

    // set the response mime type for excel 
    response.ContentType = "application/vnd.ms-excel"; 
    response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 

    // create a string writer 
    using (StringWriter sw = new StringWriter()) 
    { 
    using (HtmlTextWriter htw = new HtmlTextWriter(sw)) 
    { 
    // instantiate a datagrid 
    DataGrid dg = new DataGrid(); 
    dg.DataSource = ds.Tables[0]; 
    dg.DataBind(); 
    dg.RenderControl(htw); 
    response.Write(sw.ToString()); 
    response.End(); 
    } 
    } 
    } 
} 
} 

你也可以去這個鏈接http://tim.mackey.ie/HowtoExportADatasetToExcelCAspnet.aspx

+0

u可以給我完整代碼 – 2013-04-08 09:40:49

+0

是的。讓我編輯帖子.. – pordi 2013-04-08 11:19:41

0

您只需將ŧ他在頁面加載事件方法之上的以下代碼。它肯定會工作。

public override void VerifyRenderingInServerForm(Control control) 
    { 
     /* Verifies that the control is rendered */ 
    } 
0
Please try with the below code for the blank excel sheet export issues. 

#region " Excel Export" 
    private void fnExcelUpload() 
    { 
     try 
     { 
      dgDashboard.AllowPaging = false; 
      dgDashboard.Columns[0].Visible = false; 
      Response.ContentType = "application/vnd.ms-excel"; 
      Response.AddHeader("content-disposition", "attachment; filename = ExcelExport.xls"); 
      Response.Charset = ""; 
      Response.Buffer = true; 
      this.EnableViewState = false; 
      StringWriter tw = new StringWriter(); 
      HtmlTextWriter hw = new HtmlTextWriter(tw); 
      fillDashboard(); 
      dgDashboard.RenderControl(hw); 
      HttpContext.Current.Response.Write(tw.ToString()); 
      HttpContext.Current.ApplicationInstance.CompleteRequest(); 
      HttpContext.Current.Response.Flush(); 
      //HttpContext.Current.Response.End(); 
     } 
     catch (Exception Ex) 
     { 
      ErrorLog obj = new ErrorLog(Session["PROGRAMCODE"].ToString(), Ex.Message, Ex.StackTrace, this.Page.ToString(), new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name, System.Net.Dns.GetHostEntry(Context.Request.ServerVariables["REMOTE_HOST"]).HostName.ToString(), Session["EMPNUMBER"].ToString(), HttpContext.Current.User.Identity.Name.ToString()); 
     } 
     HttpContext.Current.Response.End(); 
    } 

    protected void imgExcelExport_Click(object sender, ImageClickEventArgs e) 
    { 
     fnExcelUpload(); 
    } 
    #endregion