2012-07-12 54 views
0

从我的网站上,我有一个按钮,它调用一个方法,然后生成excel报告。代码起作用。问题是代码在同一个选项卡上显示所有gridviews(有3个)。我可以添加什么代码,以便当我点击按钮时,它将下载文档,但每个gridview都显示在其单独的选项卡上。标签名称将是top 1,top 2和top 3.为了澄清,现在所有的gridviews都显示在top 1选项卡上,我需要制作2个以上的选项卡(top 2和top 3),并将gridview2在顶部2选项卡上,以及顶部3选项卡上的gridview3。只有1个数据集。我可以使用什么代码来循环它,以便将每个表格显示到不同的工作表中?将gridviews导出为ex​​cel进入3个工作表

public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    DataSet dataSet = new DataSet(); 

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ISALog1ConnectionString"].ToString()); 

    SqlCommand cmd = new SqlCommand("exec ProxyReport", conn); 
    cmd.CommandTimeout = 200; 

    SqlDataAdapter ad = new SqlDataAdapter(cmd); 
    ad.Fill(dataSet); 

    GridView1.DataSource = dataSet.Tables[0]; 
    GridView1.DataBind(); 
    GridView2.DataSource = dataSet.Tables[1]; 
    GridView2.DataBind(); 
    GridView3.DataSource = dataSet.Tables[2]; 
    GridView3.DataBind(); 

} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    string attachment = "attachment; filename=Top 1.xls"; 
    Response.ClearContent(); 
    Response.AddHeader("content-disposition", attachment); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.ContentType = "application/ms-excel"; 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 
    GridView1.RenderControl(htw); 
    GridView2.RenderControl(htw); 
    GridView3.RenderControl(htw); 
    Response.Write(sw.ToString()); 
    Response.End(); 
} 
public override void VerifyRenderingInServerForm(Control control) 
{ 

} 


} 
+0

我不知道准确的答案,但我会想象它会涉及到像在每个'GridView.RenderControl'的输出中包含''标记的内容。除非我错过了一些东西,否则输出不应该是'.xlsx'文件? – 2012-07-12 16:16:17

+0

是的,它应该是一个xlsx。但即时通讯我想我需要改变很多代码...并添加一些循环代码。并替换button1_click方法的内容..我只是不知道如何.. – Cloud 2012-07-12 16:29:28

回答