2009-06-17 12 views
1

こんにちは私はデータを表示するためにグリッドを使用しているグリッドビューのエクスポートに次のコードを使用して、グリッドビューとiamのヘッダーとしてダイナミックデータテーブルを追加するアプリケーションを開発していますが、グリッドにダイナミックにExcelに追加されました。私が使用しているコードは:グリッドビューをエクスポートするにはどうすればいいですか?

Response.AddHeader("content-disposition", "attachment;filename=Report.xls"); 
    Response.Charset = String.Empty; 
    Response.ContentType = "application/vnd.xls"; 
    System.IO.StringWriter sw = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw); 
    GridView1.DataBind(); 
    GridView1.RenderControl(hw); 
    Response.Write(sw.ToString()); 
    Response.End(); 

です。

ありがとうございます!

答えて

0

ダイナミックデータテーブルをヘッダーとして追加する場所がわかりません。これは、データバインドの後、GridView1.RenderControl(hw)の前に来る必要があります。

0

は、これがフォーマットされた出力ファイルにGridViewコントロールをエクスポートします

   protected void btnExcel_Click(object sender, ImageClickEventArgs e) 
      { 
       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(); 
      //Change the Header Row back to white color 
      gvdetails.HeaderRow.Style.Add("background-color", "#FFFFFF"); 
      //Applying stlye to gridview header cells 
      for (int i = 0; i < gvdetails.HeaderRow.Cells.Count; i++) 
      { 
      gvdetails.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1"); 
      } 
      int j = 1; 
      //This loop is used to apply stlye to cells based on particular row 
      foreach (GridViewRow gvrow in gvdetails.Rows) 
      { 
      gvrow.BackColor = Color.White; 
      if (j <= gvdetails.Rows.Count) 
      { 
      if (j % 2 != 0) 
     { 
     for (int k = 0; k < gvrow.Cells.Count; k++) 
      { 
     gvrow.Cells[k].Style.Add("background-color", "#EFF3FB"); 
      } 
     } 
     } 
      j++; 
     } 
      gvdetails.RenderControl(htw); 
      Response.Write(sw.ToString()); 
      Response.End(); 
      } 
0

ボタンクリックイベントでこれを試してみてください

Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment; filename=gridSample.xls"); 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.ms-excel"; 

     using (StringWriter sw = new StringWriter()) 
     { 
      HtmlTextWriter hw = new HtmlTextWriter(sw); 

      //to export all pages 
      gridSample.AllowPaging = false; 
      gridSample.DataSource = progress.getSample(); 
      gridSample.DataBind(); 
      //bind again 

      gridSample.HeaderRow.BackColor = Color.White; 

      foreach (TableCell cell in gridSample.HeaderRow.Cells) 
      { 
       cell.BackColor = gridSample.HeaderStyle.BackColor; 
      } 
      foreach (GridViewRow row in gridSample.Rows) 
      { 
       row.BackColor = Color.White; 
       foreach (TableCell cell in row.Cells) 
       { 
        if (row.RowIndex % 2 == 0) 
        { 
         cell.BackColor = gridSample.AlternatingRowStyle.BackColor; 
        } 
        else 
        { 
         cell.BackColor = gridSample.RowStyle.BackColor; 
        } 
        cell.CssClass = "textmode"; 
       } 
      } 

      gridSample.RenderControl(hw); 

      //style to format numbers to string 
      string style = @"<style> .textmode { } </style>"; 
      Response.Write(style); 
      Response.Output.Write(sw.ToString()); 
      Response.Flush(); 
      Response.End(); 
     } 
関連する問題