GridView daki Verileri Tablo Yöntemi İle Excel Dosyasına Kaydetme-Metod1
Bu makalede Sql veritabanındaki verileri SqlDataSource ile GridView nesnesine aktarıp, daha sonra GridView daki verileri tablo ya aktaracağız. Bundan sonraki adımda da tablodaki verileri render ederek. Excel dosyasına kaydedeceğiz. Formunuza 1 adet GridView, Button ve SqlDataSource nesnesi ekleyin. Aşağıdaki Şekil 1 i inceleyin.
Şekil 1
Şekil 2
Şekil 3
Ş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)
{
}
//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);
//}
protected void btnExceleKaydet_Click(object sender, EventArgs e)
{
// Yeni bir tablo oluşturuyoruz. Bu tablo griddeki satırları içerisinde barındıracak.
// Oluşan Excel dosyasında hücreler arasında çizgiler ekliyoruz
Table tablo = new Table();
tablo.GridLines = GridLines.Both;
// Tablonun ilk satırı sütun başlıkları olacak
tablo.Rows.Add(GridView1.HeaderRow);
// Gridview daki satırları döngü ile Rows kolleksiyonundan alıyor ve tabloya ekliyoruz
foreach (GridViewRow row in GridView1.Rows)
{
// GridViewRow class ı TableRow class ından kalıtıldığı için Add metoduna parametre olarak verilebilir
tablo.Rows.Add(row);
}
// Burada gridview yerine tablo nesnesini render ediyoruz
StringWriter stringYaz = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(stringYaz);
tablo.RenderControl(htw); // Render edilen bilgileri htw nesnesine yaz
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Personel.xls");
Response.ContentType = "application/ms-excel";
Response.Write(stringYaz.ToString());
Response.End();
}
}
//Bir sonraki makalede görüşmek üzere. Bahadır