Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


ASP.Net Gridview Data Kontrolünden Excel ve Word’e Verilerin Aktarımı

Yazar: ismail aktaş

Kategori: ASP.NET

Eklenme Tarihi: 08.06.2007 07:14:35

Merhabalar. Bu uygulama makalemizde ASP.Net data kontrollerinden GridView kontrolüne bir anlam daha kazandırıp, verileri listelemekle kalmayıp aynı zamanda Word ve Excel’e aktarım-transfer işlemlerini kısaca anlatmaya çalışacağım.
ASP.Net Gridview Data Kontrolünden Excel ve Word’e Verilerin Aktarımı

Merhabalar.
Bu uygulama makalemizde ASP.Net data kontrollerinden GridView kontrolüne bir anlam daha kazandırıp, verileri listelemekle kalmayıp aynı zamanda Word ve Excel’e aktarım-transfer işlemlerini kısaca anlatmaya çalışacağım.

Uygulamamızda kullanılacak olan materyaller :
1. "Gridviewaktar.aspx", "Gridviewaktar.aspx.vb"
2. "Gridviewaktar.aspx" ile aynı klasörde bulunan "urunresim" klasörü ve içinde "ekran1.jpg", "ekran2.jpg", "ekran3.jpg" adlarında temsili ürün resimleri.
3. App_Data Varsayılan klasöründe bulunan "db.mdb" adlı access veritabanı.

"db.mdb" veritabanımızda "tblurunler" tablosunu kullanacağız. Bu tablonun alan yapısı şu şekilde olacaktır.




Bu uygulama örnek teşkil edeceğinden ve önemli olanın verilerin aktarımını anlamamız olduğunu düşündüğümden ürün bilgilerini rastgele girdim.
Bu noktada kod yazma kısmına geçebiliriz.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="gridviewaktar.aspx.vb" Inherits="gridviewaktar" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Button ID="Button1" runat="server" Text="Excel'e Aktar" />

<asp:Button ID="Button2" runat="server" Text="Word'e Aktar" />

<br />

<asp:GridView ID="GridView1" Width="400" runat="server" AutoGenerateColumns="False"

BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2"

DataKeyNames="urunid" DataSourceID="AccessDataSource1" Font-Names="Trebuchet MS" Font-Size="Small"

ForeColor="Black" GridLines="None">

<FooterStyle BackColor="Tan" />

<Columns>

<asp:BoundField DataField="urunid" HeaderText="Ürün ID" InsertVisible="False" ReadOnly="True"

SortExpression="urunid" />

<asp:BoundField DataField="urunadi" HeaderText="Ürün Adı" SortExpression="urunadi" />

<asp:BoundField DataField="urunfiyat" HeaderText="Fiyat" SortExpression="urunfiyat" />

<asp:BoundField DataField="urunozellik" HeaderText="Özellik" SortExpression="urunozellik" />

<asp:ImageField DataImageUrlFormatString="~\urunresim\{0}" ItemStyle-HorizontalAlign="Center"

ControlStyle-Height="50" ControlStyle-Width="50" DataImageUrlField="urunresim"

HeaderText="Resim">

</asp:ImageField>

</Columns>

<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />

<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />

<HeaderStyle BackColor="Tan" Font-Bold="True" HorizontalAlign="Left" />

<AlternatingRowStyle BackColor="PaleGoldenrod" />

</asp:GridView>

</div>

<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/db.mdb"

SelectCommand="SELECT * FROM [tblurunler]"></asp:AccessDataSource>

&nbsp;<br />

</form>

</body>

</html>


“Gridviewaktar.aspx” sayfamızı oluşturan kodlar bu kadar.
Kodları kısaca inceleyecek olursak sayfamıza bir GridView data kontrolü ekledik. Kolonların GridView tarafından otomatik oluşturulmasını engellemek için AutoGenerateColumns özelliğine Boolean veri tipinden False değerini atadık.
Kolonlar otomatik olarak oluşturulmayacağı için kolonları bir bir manuel olarak yazdık. ImageField türünden bir kolon ekledik ve DataImageUrlFormatString özelliğine sayfanın(Gridviewaktar.aspx) bulunduğu klasördeki urunresim klasörüne bakması gerektiğini belirttik.
Son olarak da {0} indexli parametre olarak DataImageUrlField özelliğinde belirlenen resim adını göndererek resmin ekranda görüntülenmesini sağladık.

AccessDataSource1, objesi ile veritabanımıza bağlandık ve amacımız veri çekmek olduğu için select ifadesini yazdık.
GridView data kontrolümüzü AccessDataSource1 bağlantı objemize DataSourceID özelliğini kullanarak ilişkilendirdik.
Herşey yolunda giderse sayfayı çağırdığımızda karşımıza gelecek olan ekran görüntüsü şu şekilde olacaktır.


Uygulamamızın geriye kalan kod kısmı ise şu olacaktır.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Aktar("Excel")

End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

Aktar("Word")

End Sub

Sub Aktar(ByVal paramtip As String)

Response.Clear()

Dim DosyaAdi As String = "aktar"

If paramtip = "Excel" Then

Response.AddHeader("content-disposition", "attachment;filename=" & DosyaAdi & ".xls")

Response.ContentType = "application/vnd.xls"

ElseIf paramtip = "Word" Then

Response.AddHeader("content-disposition", "attachment;filename=" & DosyaAdi & ".doc")

Response.ContentType = "application/vnd.doc"

End If

Response.Charset = "1254"

Dim stringWrite As New System.IO.StringWriter()

Dim htmlWrite As New HtmlTextWriter(stringWrite)

GridView1.RenderControl(htmlWrite)

Response.Write(stringWrite.ToString())

Response.End()

End Sub

Public Overrides Sub VerifyRenderingInServerForm(ByVal control As System.Web.UI.Control)

End Sub



Hepsi bu kadar.
Kodların asıl amacı şu, postback işlemi ile gönderilen sayfanın Başlık(Header) bilgisinin aktar.xls, aktar.doc olacağını belirtiyoruz.
İçerik tipi olarak da aynı uygulama yapısını(application/vnd.*) kullanıyoruz.
GridView data kontrol objemizin RenderControl metodunu kullanarak kayıtları gösterime, aktarıma hazır hale getiriyoruz.
Son olarak da Response objesi ile yazdırma işlemi yaparak Word, Excel dosyamızı ekranımıza yazdırıyoruz.
Tabi bu yazdırma işlemi download olarak gerçekleşiyor.

Not: VerifyRenderingInServerForm alt yordamı mutlaka eklemek durumdayız. Bu alt yordam, Render işlemi için gereklidir.

  • Makalenin kaynak kodlarına ulaşmak için buraya tıklayınız.

    Umarım faydalı olmuştur.

    İsmail AKTAŞ
  • Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
    Tema
    Anket
    ASP.NET MVC'yi Projeleriniz de kullandınız mı?


    En Çok Okunan Makaleler
    En Son Eklenen Makaleler
    Soru Merkezinde Bekleyenler
    Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
    Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.