DataGridView Excele Aktarma

C# ile yapılan bir web sayfası içinde kullanılan datagrid içindeki veriyi butona tıklandığında doğrudan bilgisayara excel olarak indirme işlemi yapabilecek method şu şekildedir:

.aspx dosyası

 <asp:Button ID ="ExcelButton" runat="server" Text ="EXCEL"  CssClass =" btn-tab" Style="text-align: center;color:cornflowerblue;font-size: small; font-weight : bold;background-color:aliceblue; vertical-align: middle; background-image: url('../img/Excel-icon.png'); background-position: left center; background-repeat: no-repeat;" BorderWidth="0px" Enabled="true" OnClick="ExportToExcel_Click"/>

Bu projede iki farklı ekran ve grid kullanıldığından öncelikle seçilen grid’e göre excel oluşturulacak.

protected void SelectGridView(GridView gridView, string ExcelName)
        {

            Response.ClearContent();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", ExcelName+".xls"));
            // Türkçe karakterlerde hata vermemesi için eklendi.
            Response.ContentEncoding = System.Text.Encoding.Unicode;
            Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
            Response.ContentType = "application/ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            gridView.AllowPaging = false;
            if (gridView == GridView2)
            {
               //GridView2 bind yapıldığı method
                ShowData2();

            }
            else
            {
               //GridView1 bind yapıldığı method
                ShowData();

            }
           //Kolon isimlerinin rengi verilmektedir
            gridView.HeaderRow.Style.Add("background-color", "#FFFFFF");
            
           
            for (int i = 0; i < gridView.HeaderRow.Cells.Count; i++)
            {
                gridView.HeaderRow.Cells[i].Style.Add("background-color", "#df5015");
            }
            //Gridin ilk kolonu buton olduğundan o kısımın excele export edilmesini engeller.
            gridView.HeaderRow.Cells[0].Visible = false;

            // her satır için bir buton olduğu için gridde bu şekilde her satırın ilk kolonu kaldırılacak.
            for (int i = 0; i < gridView.Rows.Count; i++)
            {
                GridViewRow row = gridView.Rows[i];
                row.Cells[0].Visible = false;
            }
            // render işleminde hata almaması için aspx sayfasının en başına
EnableEventValidation="false" eklenmelidir.
            gridView.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
           // gridview Render işlemi için gerekmektedir.
        public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
        {
            /* Verifies that the control is rendered */
        }

Excel butonuna tıklandığında dropdown ile seçilen ekrana göre şekillenip grid’i excel olarak alacak method şu şekildedir :

 protected void ExportToExcel_Click(object sender, EventArgs e)
        {
            if (DropDownList1.SelectedIndex == 0)
            {
                SelectGridView(GridView2, "GridView2_Data");
            }
            else
            {
                SelectGridView(GridView1, "GridView1_Data");
            }
        }

Yorum bırakın