Aşağıdaki kodları bir butona yerleştirdiğimizde, oradaki “Gridviewiniz” kısmını kendi Gridview ayarlayarak, verilerinizi olduğu gibi Excel‘e aktarabilirsiniz. Rapor.xls olarak masaüstüne kaydedecektir.
HtmlForm form1 = new HtmlForm();
form1.Controls.Add(Gridviewiniz);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentEncoding = System.Text.Encoding.GetEncoding(“windows-1254”);
Response.Charset = “windows-1254”; //ISO-8859-13 ISO-8859-9 windows-1254
System.Web.HttpContext.Current.Response.AddHeader(“content-disposition”, “attachment;filename=Rapor.xls”);
Response.ContentType = “application/vnd.ms-excel”;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
Gridviewiniz.RenderControl(htmlWrite);
Response.Output.Write(” <meta http-equiv=’Content-Type’ content=’text/html; charset=windows-1254′ />” + stringWrite.ToString());
Response.Flush();
System.Web.HttpContext.Current.Response.End();
Yorumlar
Kanka eline sağlık, burda birşeyi unutmamak lazım eğer excel üzerinde hesaplama işlemleri yapılacaksa Microsoft.Office.Interop altından excel nesnesi türetimi ile tek tek excel cell’leri programatik olarak doldurulmalı, response nesnesi ile yazdırılan excel’ler üzerinde hesaplama işlemleri sırasında sorunlar çıkıyor. Bununda sebebi bir excel sheet değil aslında bir html content yazdırıyor olmanız. Namespace’i yanlış yazmış olabilirim , Office.Excel.Interop’ta olabilir, bu sınıflarla haşır neşir olmakta fayda var, özellikle office uygulamalarına add-in’ler yazarken kullanmak gerekiyor. VSTO programming açısındanda önemli.
birde sunucu üzerinde dediğim sınıfları kullanabilmek için sunucuda office’in kurulu olması gerekir. Sunucu üzerinde office kurulu değil ve lisans alacak parada yoksa yine microsoft’un OWC tool’u kullanılabilir, spreadsheet class’ından türetimle excel instance’lar oluşturulup programatik doldurulabilir. OWC tabiki ücretsiz.