Makale Özeti

Günümüzde geliştirilen bir çok projede yerini almış olan DataGrid nesnesindeki verileri Excel formatında sistemimizde nasıl saklanabilineceğinden bahsetmek istiyorum

Makale

DataGrid’deki verileri Excel’e göndermek

Bu makalemde sıkça kullandığımız DataGrid objesindeki verileri  excel dosyasına nasıl export edebileceğimizden bahsedeceğim.

  Formumuzun üzerine bir DataGrid yerleştirelim. Ben id olarak dtgConvertExcel'i kullanacağım. Siz bunu istediğiniz şekilde farklı tanımlayabilirsiniz.
 Daha sonra bu DataGrid’imize DataBase’imizden bazı veriler çekelim. Ben DataBase olarak SqlServer ve ConnectionString’i de Web.Config’den almak için Configuration Library’sini kullanıyorum.

private void page_Load(object sender, System.EventArgs e)
{
     SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["db"].ToString());
     SqlCommand comm = new SqlCommand ("Select * From tblOgrenciler");
     conn.Open();
     comm.Connection = conn;
     try
     {
         SqlDataAdapter adptr = new SqlDataAdapter(comm);
         DataTable tblData = new DataTable();
         adptr.Fill(tblData);
         dtgConvertExcel.DataSource = tblData; dtgConvertExcel.DataBind();
     }
     catch {}
     finally
     {
        conn.Close();
     }
}

Yukarıda yapmış olduğumuz işlem ile basit bir şekilde DataGrid’imizi doldurmuş olduk. Şimdi bir tane button yerleştirip DataGrid’imiz içindeki verileri bir excel dosyası oluşturtup içine aktaracağız.


private void btnConvertExcel_Click(object sender, System.EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.ContentType = "application/vnd.ms-excel"; // tahmin deceğiniz gibi excel yerine word yazadığımızda word dosyası oluşturacaktır.  
    Response.ContentEncoding = System.Text.Encoding.UTF7;
    Response.AddHeader("Content.Disposition", "atachment ; filename="+"data.xls"+ "");
// eğer bu radaki dosya adını dinamik yapmak isterseniz bir değişken e dosya adını tanımlatarak kullanabilirsiniz.
   Response.Charset = "";
   EnableViewState = false;
// buraya kadar verilerimizi excel e atmak için temel adımları uyguladık şimdide verilerimizi bu excel dosyasına yazdıralım.Bunun için
   System.IO library sindeki StringWriter namespace’inden faydalanacağız
   StringWriter strw = new StringWriter();
   HtmlTextWriter htmlw = new HtmlTextWriter(strw);
   Controls.Clear();
   dtgConvertExcel.RenderControl(htmlw);
   Response.Write(strw.ToString());
}


 Evet işlemimiz şimdilik bu kadar. Burada dikkatinizi çekmek istediğim bir başka nokta ise, bu işlemin DataGrid'inizdeki bütün verileri ve DataGrid’inizin style’ını Excel’e olduğu gibi göndermesidir. Tasarımınızı templateColumn olarak yaparsanız ve Excel’e göndermek istemediğiniz bir column varsa, bu işlemin başına dtgConvertExcel.Columns[görünmesi istenmeyen columun index’i].Visible = false  olarak eklemeniz gerekecektir.

İşlemin başında false yaptığımız son değeri işlemden sonra Visible = true degerine dondurmeniz yeterli olacaktır.

Bir sonraki makalede görüşmek dileği ile
Alpaslan Aykovan Solution Developer