내 웹 사이트에서 메서드를 호출 한 다음 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)
{
}
}
정확한 대답은 모르겠지만, 각 'GridView.RenderControl'의 출력을'' 태그에 래핑하는 것과 관련이 있다고 생각합니다. 그리고 내가 뭔가를 놓치지 않으면, 출력물이'.xlsx' 파일이되어서는 안됩니까? –
예, xlsx 여야합니다. 하지만 난 그걸로 코드를 많이 변경해야한다고 생각 ... 그리고 루프 코드의 일종 추가. 그리고 button1_click 메서드의 내용을 바꿉니다 .. 난 단지 어떻게 .. 모르겠다. – Cloud