Gridview To Excel c#

Merhaba, bu yazımda konudan da anlaşılacağı üzere gridview den excel e aktarma işlemini anlatacağım.

Aktarma işleminin farklı yöntemleri illaki vardır fakat benim dikkat çekmek istediğim nokta aktarma esnasında hangi hatalarla karşılaştım ve bunları nasıl çözdüm bunların izahını yapacağım.

İlk olarak karşılaştığım hata:

‘GridView’ türündeki ‘GridView1’ denetimi runat=server değerine sahip bir form etiketine yerleştirilmelidir.

Bunun çözümü: c# tarafına

 public override void VerifyRenderingInServerForm(Control control)
{ }

fonksiyonunu ekleyerek sorunu bertaraf ettim.

İkinci yaşadığım sorun ise türkçe karakter sorunu idi. Onunda çözümü kodların tamamı paylaşılarak çözülmüştür.

Response.ClearContent();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");                Response.Charset = "windows-1254";
Response.AddHeader("content-disposition", "attachment; filename=gvtoexcel.xls");        Response.ContentType = "application/excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridListe.Columns[0].Visible = false;
gridListe.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
Response.Clear();


********************************************************************************************************

Response.Clear();              
string filename = "";filename = "Liste_" + DateTime.Now.ToString() + ".xls";

Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1254");
Response.Charset = "windows-1254";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
gridListe.Columns[0].Visible = false;
gridListe.Columns[1].Visible = false;
gridListe.RenderControl(hw);
Response.Write("<table>"); // Burası çok önemli aksi takdirde TABLE şeklinde aktarım yapar.
Response.Output.Write(sw.ToString());
Response.Write("</table>");
Response.Flush();
Response.End();


Herkese faydalı olması dileğiyle ...

İŞ PARÇACIĞI DURDURULUYORDU gibi bir hata almanız sonucu aktarım yapmıyor ise bunun nedeni sayfanızda UPDATE PANEL dir. Update paneli açıklama satırı yaparak bunu çözebilirsiniz.


Yorumlar

Bu blogdaki popüler yayınlar

Başvuran varsayılan bitiş noktası öğesi bulunamadı. Hatası ve Çözümü

Verilen yolun biçimi desteklenmiyor. (C#, FileUpload Dosya Yükleme Hatası)

ExecuteScalar, ExecuteReader, ExecuteNonQuery Hangi Durumlarda Kullanılır