Asp.Net sayfalarınızda bulunan Grid View data kontrolü içindeki bilgilerinizi kullanıcılarınız Ms Excel' e göndermeleri gerekiyorsa birazdan anlatacağım şey işinize yarayabilir.
Hatırlarsanız bir kaç blog öncesinde buna benzer bir yazı daha yazmıştım.O yazıda Asp.Net uygulamlarınızda yazdırma işlemi nasıl yapılır anlatmaya çalışmıştım.Bu kezde mantık olarak aynı olan başka bir yönteme göz atacağız
Evet...Asp.net web uygulamalarımızda bulunan veri tablolarının bulunduğu sayfaları yazdırmak kadar,değişik formatlarda dosya çıktısı vermekte gayet gereklidir.Herhangi bir raporun Excel ,Word veya mevcut raporun PDF çıktısının alınması bazen kullanıcılarınızın işine yarabilmekte.Çoğu zaman bu tür bir işlemi kendi uygulamalarımda kullanıcıların hazırlamak istedikleri raporu uygulama içinde seçeneklendirerek hazırlamasını ve daha sonra dosya çıktısını edinmesini isterim.Birazdan anlatacağım bu yöntem ise Grid View kontrolünüz içindeki verilerin tümünü Excele atmak olacaktır.Elbette RenderControl ve HtmText Writer kullanacağımız uygulamanın yaptığı bu işi yapan başkaca yöntemler vardır.Fakat biz daha kestirmeden giderek bu gereksinimi sağlamaya çalışacağız.
Peki diğer gereksinimler nedir ?
1- Ugulamanızda bir veritabanı olmalı
2- Uygulamanızda veritabanınız içindeki bir Table ve içerisinde veriler olmalı
3- Uygulamanızın herhangi bir sayfasında bu Table 'a bağlı bir Grid View veya başka bir data kontrol olmalı
4- Dolayısıyla Connection String yapılandırılmış olmalı
1- Grid View olduğunu varsaydığımız data kontrolünün altına yada sayfanızda dilediğiniz bir yere ekleyeceğiniz bir ImageButton' a ne derseniz.
<asp:ImageButton ID="ImageButton1" runat="server"
ImageUrl="~/Image/excel.jpg" />
2 - ImageButton Source mode
Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
MyExcel("Default.xls", GridView1)
End Sub
3-Inherit Overloads Source mode
Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
4- HtmlTextWriter Source
Private Sub MyExcel(ByVal strFileName As String, ByVal dg As GridView)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
'Data kontrolünü HtmlTextWriter render ediyoruz
GridView1.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.[End]()
End Sub
5- Şimdide Test Edelim...
Hatırlarsanız bir kaç blog öncesinde buna benzer bir yazı daha yazmıştım.O yazıda Asp.Net uygulamlarınızda yazdırma işlemi nasıl yapılır anlatmaya çalışmıştım.Bu kezde mantık olarak aynı olan başka bir yönteme göz atacağız
Evet...Asp.net web uygulamalarımızda bulunan veri tablolarının bulunduğu sayfaları yazdırmak kadar,değişik formatlarda dosya çıktısı vermekte gayet gereklidir.Herhangi bir raporun Excel ,Word veya mevcut raporun PDF çıktısının alınması bazen kullanıcılarınızın işine yarabilmekte.Çoğu zaman bu tür bir işlemi kendi uygulamalarımda kullanıcıların hazırlamak istedikleri raporu uygulama içinde seçeneklendirerek hazırlamasını ve daha sonra dosya çıktısını edinmesini isterim.Birazdan anlatacağım bu yöntem ise Grid View kontrolünüz içindeki verilerin tümünü Excele atmak olacaktır.Elbette RenderControl ve HtmText Writer kullanacağımız uygulamanın yaptığı bu işi yapan başkaca yöntemler vardır.Fakat biz daha kestirmeden giderek bu gereksinimi sağlamaya çalışacağız.
Peki diğer gereksinimler nedir ?
1- Ugulamanızda bir veritabanı olmalı
2- Uygulamanızda veritabanınız içindeki bir Table ve içerisinde veriler olmalı
3- Uygulamanızın herhangi bir sayfasında bu Table 'a bağlı bir Grid View veya başka bir data kontrol olmalı
4- Dolayısıyla Connection String yapılandırılmış olmalı
1- Grid View olduğunu varsaydığımız data kontrolünün altına yada sayfanızda dilediğiniz bir yere ekleyeceğiniz bir ImageButton' a ne derseniz.
<asp:ImageButton ID="ImageButton1" runat="server"
ImageUrl="~/Image/excel.jpg" />
2 - ImageButton Source mode
Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
MyExcel("Default.xls", GridView1)
End Sub
3-Inherit Overloads Source mode
Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
4- HtmlTextWriter Source
Private Sub MyExcel(ByVal strFileName As String, ByVal dg As GridView)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/vnd.ms-excel"
Response.Charset = ""
Me.EnableViewState = False
Dim oStringWriter As New System.IO.StringWriter
Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter)
'Data kontrolünü HtmlTextWriter render ediyoruz
GridView1.RenderControl(oHtmlTextWriter)
Response.Write(oStringWriter.ToString())
Response.[End]()
End Sub
5- Şimdide Test Edelim...
Bu Yazının Sponsorları
ontrol 'ctl00_ContentPlaceHolder1_GridView1' of type 'GridView' must be placed inside a form tag with runat=server.
YanıtlaSilhatasına çözüm arıyorum