2016-05-09 37 views
0

私のページには、2つのテキストボックスコントロールがあります.Excelにエクスポートするには、Calendar Extender &から日付をゲートしています。シートを凌ぐ 私はExcelシートをゲートしているときに、テキストボックス&ボタンを表示します。そこからExcelシートをエクスポートしています。GridviewデータをAsp.netのExcel形式にエクスポートするC#

エクスポートボタンに書き出しコードを書きました。 のように: -

protected void Export_to_Excel_Click(object sender, EventArgs e) 
    { 
     try 
     { 

      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); 
      Grd_MidData.AllowPaging = false; 
      bindgriddata(); 
      //Change the Header Row back to white color 
      Grd_MidData.HeaderRow.Style.Add("background-color", "#FFFFFF"); 
      //Applying stlye to gridview header cells 
      for (int i = 0; i < Grd_MidData.HeaderRow.Cells.Count; i++) 
      { 
       Grd_MidData.HeaderRow.Cells[i].Style.Add("background-color", "#df5015"); 
      } 
      Grd_MidData.RenderControl(htw); 
      Response.Write(sw.ToString()); 
      Response.Flush(); 
     } 
     catch (Exception ee) 
     { 

     } 
    } 

私はExcelシートをゲート制御しています、それは私がフィルタリングをやっているところから、ボタン2つのテキストボックス&と一緒にGridViewのデータを示しています。

どのように私は、グリッドビューのデータのみを表示し、テキストボックス&ボタンをExcelシートに表示しないことをお勧めします。

答えて

1

は、あなたはそれが私のために働いているコード

bindgriddata();  
    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 ht = new HtmlTextWriter(sw); 
    Grd_MidData.RenderControl(ht); 
    Response.Write(sw.ToString()); 
    Response.End(); 

の下に使用して、 Excelのコードにデータをバインドする必要があります。

+0

ありがとう#Rajesh。私はこのコードを使用しています。代わりにResponse.End()に行った変更は1つだけです。 Response.Flush();を使用します。しかし問題はそこに残っている。 Excelシートをダウンロードしているとき、それはTextviewとButtonと共にGridviewのデータを表示します。私たちは印刷画面と同じように、ページ全体のデータを表示します...どうすればそのシートから2つのテキストボックスとボタンを削除できますか? – Sabyasachi

0

enter image description here

ここでGridViewのデータは、日付からと一緒に表示されています。また、テキストボックス&ボタン:日付へ。では、これらのフィールドをシートから削除するにはどうすればいいですか?

+0

こんにちはこれはコードで使用しているRenderControlのためです。このプロパティデータはExcelシートのようにレンダーされています。 –

0

エクセルを生成するためにxmlを使用すると、Excelと書式を作成するための機能が向上します。

protected void Export_to_Excel_Click(object sender, EventArgs e) 
{ 
    bindgriddata(); 
    Grd_MidData.DataSource = objDS; // Dataset 
    Grd_MidData.DataBind(); 

    using (XLWorkbook wb = new XLWorkbook()) 
    { 
     try 
     { 
      //creating worksheet 
      var ws = wb.Worksheets.Add("Report"); 

      //adding columms header 
      int columnscount = objDS.Tables[0].Columns.Count; 
      char a = 'A'; 
      for (int j = 1; j <= columnscount; j++) 
      { 
       string str = a + "1"; 
       ws.Cell(str).Value = objDS.Tables[0].Columns[j - 1].ColumnName.ToString(); 
       ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; 
       a++; 
      } 
      ws.Columns().AdjustToContents(); 

      //formatting columns header 
      var rngheaders = ws.Range("A1:J1"); 
      rngheaders.FirstRow().Style 
       .Font.SetBold() 
       .Font.SetFontSize(12) 
       .Font.SetFontColor(XLColor.Black) 
       .Fill.SetBackgroundColor(XLColor.DeepSkyBlue) 
       .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) 
       .Border.OutsideBorder = XLBorderStyleValues.Thin; 


      ////adding data to excel 
      int k = 2; 
      foreach (DataRow row in objDS.Tables[0].Rows) 
      { 
       char b = 'A'; 
       string str = b + "" + k; 
       for (int i = 0; i < objDS.Tables[0].Columns.Count; i++) 
       { 
        ws.Cell(str).Value = row[i].ToString(); 
        ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; 
        ws.Cell(str).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left); 
        b++; 
        str = b + "" + k; 
       } 
       k++; 
      } 

      Response.Clear(); 
      Response.Buffer = true; 
      Response.Charset = ""; 
      Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.AddHeader("content-disposition", "attachment;filename=Customer.xlsx"); 
     } 
     catch { } 

     using (MemoryStream MyMemoryStream = new MemoryStream()) 
     { 
      wb.SaveAs(MyMemoryStream); 
      MyMemoryStream.WriteTo(Response.OutputStream); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 

} 
0

GridViewをエクスポートするときに同じ問題が発生しました。私はtry/catchを追加し、そのメッセージをExcelにエクスポートし、エラーが発生していることに気付きました。私は次の答えのおかげでそれを解決しました:GridView must be placed inside a form tag with runat="server" even after the GridView is within a form tag

+0

このシナリオにその答えの要点を組み入れることができますか?この質問が重複している場合は、その質問にフラグを立てて、それをそのようにマークすることができます。 – Cullub

関連する問題