Asp.net c# ile Gridviewdeki verileri Excel dosyası olarak export etmek

Arif Ceylan/ Mart 1, 2012/ VS 2010 Asp.net ve C#/ 6 comments

Gridview içerisindeki verileri Excel dosyasına dönüştürmek için gereken classımızı oluşturuyoruz.

Website menüsü-add new item-class

Classımızın adını GridViewExport.cs yapıyoruz.

Classımızın kodları aşağıda…

using System;

using System.Data;

using System.Configuration;

using System.IO;

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;

public class GridViewExportUtil

{

public static void Export(string fileName, GridView gv)

{

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.AddHeader(

"content-disposition", string.Format("attachment; filename={0}", fileName));

HttpContext.Current.Response.ContentType = "application/ms-excel";

using (StringWriter sw = new StringWriter())

{

using (HtmlTextWriter htw = new HtmlTextWriter(sw))

{

// Create a form to contain the grid

Table table = new Table();

// add the header row to the table

if (gv.HeaderRow != null)

{

GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);

table.Rows.Add(gv.HeaderRow);

}

// add each of the data rows to the table

foreach (GridViewRow row in gv.Rows)

{

GridViewExportUtil.PrepareControlForExport(row);

table.Rows.Add(row);

}

// add the footer row to the table

if (gv.FooterRow != null)

{

GridViewExportUtil.PrepareControlForExport(gv.FooterRow);

table.Rows.Add(gv.FooterRow);

}

// render the table into the htmlwriter

table.RenderControl(htw);

// render the htmlwriter into the response

HttpContext.Current.Response.Write(sw.ToString());

HttpContext.Current.Response.End();

}

}

}

///

/// Replace any of the contained controls with literals

///

///

private static void PrepareControlForExport(Control control)

{

for (int i = 0; i < control.Controls.Count; i++)

{

Control current = control.Controls[i];

if (current is LinkButton)

{

control.Controls.Remove(current);

control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));

}

else if (current is ImageButton)

{

control.Controls.Remove(current);

control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));

}

else if (current is HyperLink)

{

control.Controls.Remove(current);

control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));

}

else if (current is DropDownList)

{

control.Controls.Remove(current);

control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));

}

else if (current is CheckBox)

{

control.Controls.Remove(current);

control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));

}

if (current.HasControls())

{

GridViewExportUtil.PrepareControlForExport(current);

}

}

}

}

Kaydettikten sonra herhangi bir sayfada ;

GridViewExportUtil.Export("Exceldosyam.xls", GridView1);

Kodunu kullanabiliriz. Bu kod GridView1deki verileri exceldosyam.xls dosyası olarak export etmektedir.

Kolay gelsin.

using System.Web.Security;/p

Gelen arama terimleri:

  • c# excel veri yazma
  • e okuldan export yapma exel olarak
Share this Post

6 Comments

  1. cs dosyasını yaptım ve GridViewExportUtil.Export(“Exceldosyam.xls”, GridView1); işlemini bir butona bağladım.

    hiçbir tepki vermiyor.

  2. Hata da mı vermiyor? Butona Response.write gibi başka bir kod yazdığınızda çalışıyor mu?
    Kopyala yapıştırda bazen tırnak problemleri olabiliyor. kodları düzenledim şu an sorun çıkarmaz sanırım.
    uygulamanın dosyalarını yükledim. Visual studio 2010 ile yapmıştım.
    indirip kontrol edebilirsiniz. Adres;
    http://www.arifceylan.com/vtexcel.rar
    Kolay gelsin.

  3. Öncelike çok güzel bir paylaşım, emeğinize sağlık fakat sormam gereken birşey var.Exele aktardığımız zaman türkçe karakterler bozuluyor bu konuda bir tecrübeniz varmı? Yoksa sadece bende mi böyle bir durum gerçekleşti 🙂

  4. Paylaşım için çok teşekkürler. Çok işime yaradı.

  5. Merhaba,

    Türkçe karakter sorunu çıkarıyor.Nasıl aşabiliriz

  6. Merhaba , greidview üzerinde herhangi bir controler olduğu zaman aktarma işlemini yapmıyor örneğin linkbutton veya checkbox

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*