2012-07-12 3 views
0

내 웹 사이트에서 메서드를 호출 한 다음 Excel 보고서를 생성하는 버튼이 있습니다. 코드가 작동합니다. 문제는 코드가 동일한 탭에 모든 gridview (3 개가 있음)를 표시한다는 것입니다. 어떤 코드를 추가하면됩니다. 버튼을 클릭하면 문서가 다운로드되지만 별도의 탭에 각 gridview가 표시됩니다. 탭 이름은 위쪽 1, 위쪽 2 및 위쪽 3이됩니다. 그래서 명확히하기 위해, 모든 gridviews가 위쪽 1 탭에 표시되고, 2 탭 (상단 2 및 상단 3)을 추가하고 gridview2를 넣어야합니다. 상단 2 탭에, gridview3은 상단 3 탭에 있습니다. 데이터 세트는 1 개뿐입니다. 각 테이블을 다른 워크 시트에 표시 할 수 있도록 어떤 코드를 루프 할 수 있습니까?gridviews를 내보내고 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' 파일이되어서는 안됩니까? –

+0

예, xlsx 여야합니다. 하지만 난 그걸로 코드를 많이 변경해야한다고 생각 ... 그리고 루프 코드의 일종 추가. 그리고 button1_click 메서드의 내용을 바꿉니다 .. 난 단지 어떻게 .. 모르겠다. – Cloud

답변

관련 문제