Yazı Font Küçült Yazı Font Büyült

GridView daki Verileri Excel Dosyasına Kaydetme-2.Metod

Bu makalede Northwind.mdb Customers alanındaki  verileri Gridview nesnesinde gösterimini sağlayıp, daha sonra Excel dosyasına kaydetmeyi göreceğiz. Bir önceki metod da Tablo yöntemini ile Excel e kayıtı görmüştük. Bu örnekte de Şekil 2 deki isteğe bağlı olarak Excel e kayıt işlemini gerçekleştireceğiz. Aşağıdaki şekilleri inceleyin.

Resim1

Şekil 1

Resim2

Şekil 2

Resim3

Şekil 3

Resim4

Şekil 4

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class _Default : System.Web.UI.Page
{

  

    protected void Page_Load(object sender, EventArgs e)
    {
               
       
        if (!IsPostBack)
        {
            Page.DataBind();
                         
        }

        System.Data.OleDb.OleDbConnection baglan = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Northwind.mdb") + ";");
        System.Data.OleDb.OleDbDataAdapter adp = new System.Data.OleDb.OleDbDataAdapter();
        adp.SelectCommand = new System.Data.OleDb.OleDbCommand("Select * From Customers", baglan);

        baglan.Open();


        System.Data.DataSet ds = new System.Data.DataSet();
        adp.Fill(ds);

        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
        baglan.Close();
       
    }
    protected void btnExceleKaydet_Click(object sender, EventArgs e)
    {
       GridView1.PagerSettings.Visible = false;

        GereksizKolonlariSil();

        if (RadioButtonList1.SelectedIndex == 1) // İlk 30 kayıt
        {
            GridView1.PageIndex = 0;
            GridView1.PageSize = 30;
        }
        else if (RadioButtonList1.SelectedIndex == 2) // Tüm kayıtlar
            GridView1.AllowPaging = false;

        GridView1.DataBind(); // Yapılan değişikliklerin geçerli olması için verileri tekrar yüklüyoruz
        GridiExceleKaydet();

    }


   protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();

    }

   
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    private void GereksizKolonlariSil()
    {
        // Eğer Select, Edit ve Delete gibi CommandFieldlar aktif ise bu butonların bulunduğu sütunu gridden çıkarıyoruz
        for (int i = 0; i < GridView1.Columns.Count; i++)
        {
            if (GridView1.Columns[i] is CommandField)
                GridView1.Columns.RemoveAt(i);
        }
    }

    protected void GridiExceleKaydet()
    {
        // Oluşacak dosyaya gridview aynen aktarılacağı için hücrelerin çevrelerinin çizilmesini sağlıyoruz
        GridView1.GridLines = GridLines.Both;
        // Gönderilecek cevaba gridin içeriğini yazdırmak için GridView1 kontrolünü render etmek gerekli. Bu işlemleri
        // StringWriter ve HtmlTextWriter nesnelerini ile yürütüyoruz. StringWriter, System.IO isim alanı altında yer alır
        StringWriter stringYaz = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(stringYaz);
        GridView1.RenderControl(htw);

        // İstemciye gönderilecek cevabı oluşturuyoruz. Öncelikli olarak cevapta(response da) şu ana kadar oluşan
        // bilgileri silip, cevabın başlık bilgisine gönderilecek dosya ile ilgili bilgileri ekliyoruz.  Dosya tipini belirttikten
        // sonra yukarıda oluşturulan StringWriter nesnesini  ToString metodu ile cevaba yazdırıyoruz
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=Northwind.xls");
        Response.ContentType = "application/ms-excel";
        Response.Write(stringYaz.ToString());
        Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
        // Oluşan hata GridView1 isimli kontrolün render edilmesi esnasında alındığı için, render edilen
        // kontrolün GridView1 olmadığı durumda base class taki metodunu çağırıyoruz
        if (control.ID != "GridView1")
            base.VerifyRenderingInServerForm(control);
    }


}

//Bir sonraki makalede görüşmek üzere. Bahadır