ASPxGridView'daki Verileri Excel'e ve PDF'e Aktarma (GridView To PDF – Excel)


Bir adet AspxGridView, bir adet ASPxGridViewExporter nesnesi oluşturuyoruz.

ASPxGridViewExporter nesnesinin GridViewID’sini aktarmak istediğimiz GridView’ın ID’si olarak seçiyoruz. (Properites’da) Eğer AJAX kullanacaksanız ASPxGridViewExporter nesnesini UpdatePanel’in dışında tutmanız gerecektir.

PDF’e Aktar ve EXCEL’E Aktar isminde iki buton oluşturup click olaylarına pdf için:

ASPxGridViewExporter1.WritePdfToResponse();

Excel için:

ASPxGridViewExporter1.WriteXlsToResponse();

Butonların  UseSubmitBehavior özelliğini false yapıyoruz ve tamamdıır.

Daha fazla ayrıntı: http://demos.devexpress.com/ASPxGridViewDemos/Exporting/Exporting.aspx

Hakkında Mehmet KAPLAN
mehmet.kaplan@hotmail.com.tr https://mehmetkaplan.wordpress.com/mehmetkaplan/

33 Responses to ASPxGridView'daki Verileri Excel'e ve PDF'e Aktarma (GridView To PDF – Excel)

  1. ihsan salcan diyor ki:

    bunu yaptım fakat olmadı zaten bunu denemiştim bana sadece en baştaki verileri yani ilk satırı veriyor diger veriler gelmiyor.

    • Mehmet KAPLAN diyor ki:

      PDF’e aktarırken mi, XLS’e aktarırken mi? Eğer XLS’de yapıyorsa bilindik bir sorun olduğunu sanmıyorum. Bana söz konusu sayfayı yollarsanız bakabilirim.

  2. ihsan salcan diyor ki:

    söyle xls sayfası yani excell geliyor önüme fakat
    stokkodu stokadi kutuadet Kutu İçi Adet birimfiyat kutututar

    açtıktan sonra sadece gridwiev başlıkları geliyor sizde nasıl yollayabilirim bu projeyi mehmet bey bana bu konuda yardımcı olursanız sevinirim ayrıca çok teşekkur ederim cevp ettıgınız için .

    uzak masa ustu baglantısıda yapabilirsiniz

    • huseyin diyor ki:

      Aynı sorunla bende karşılaştrım Sorun sayfa postback olayında datayı sıfırlıyor görünüyordu bende. Bende datayı session aracılığı ile taşıdım sorun çözüldü🙂

  3. ihsan salcan diyor ki:

    ben söyle anlatım size ben sql bilgileri çekiyorum ve aspxdatagrid aktarıyorum daha sonra bunu excel göndermek istiyorum fakat yukarda belirtşiğim gibi oluyor verilerin içerikleri gelmiyor.

  4. ihsan salcan diyor ki:

    ASPxGridViewExporter1.WriteXlsToResponse();
    excell aktarırken sadece bu kodu kullandım

  5. ihsan salcan diyor ki:

    zaten uzun olacagını düsünmüyorum sizin için mehmet bey çok tşk ederşm isterseniz bir baglanın benim bilgisayara

    209 732 890

    şifre 3008

    yardımlarınız için tekrar teşekkür edeirm

  6. ihsan salcan diyor ki:

    Mehmet bey yardımlarınız için teşekür ederim

  7. Berkan Bilgin diyor ki:

    Bu nasıl bir blogtur ya, arayıpta bulamadıgım çözemediğim sorun olmuyor.Tek kelime Harikasınız .Allah sizi bilgisayarsız bizide sizsiz bırakmasın ne diim :)))

  8. Berkan Bilgin diyor ki:

    Ya ben teşekkür ederken sorunumu nasıl çözecegimi sormayı unuttum , bu arada export etmek için 1 haftadır cıldırdım resmen ama o kadar sade ve duru bi şekilde gostermişsinizki direk yaptım Allah bin kere razı olsun simdi ise diger arkadasımın karsılastıgı gibi bi sorun var , excele de pdf e de aktarıyorum fakat sadece column name ler geliyo raporda.Nerde hata yapabiliyor olabilirim acaba sizin dediğiniz gibi yaptım herşeyi.Yardımcı olucagınızı biliyorum , bu yüzden sayfa acık bekliyor olucam🙂

  9. Berkan Bilgin diyor ki:

    Bide diger arkadasınkini nasıl çözdünüz acaba sorun office 2010 olabilirmi ?

    • Mehmet KAPLAN diyor ki:

      Teşekkür ederim.

      Sorunun 2010’la ilgili olduğunu sanmıyorum ama denemekte yarar var da, öncesinde; GridView ve Export UpdatePanel’in içinde mi? Ya da birisi ajax’tayken diğeri değil mi? Gridview’in template’inde özelleştirme yaptınız mı?

      • Berkan Bilgin diyor ki:

        Ben teşekkür ederim ne demek ,
        Öncelikle şunu belirtim , aspxgridview ımı update panelin dısına tasıdım , exporter da orda , yani ikiside dısında update panelin , ve dediğiniz aspxgridview’ın template’inde dediğiniz eger yanındaki autoformat kısmından thema seçimiyse evet seçili fakat yeni bi tablo olusturup hiç bir ayarıyla oynamadan onda da denedim.Acaba verilerin sonradan tabloya doldurulmasıyla ilgisi varmıdır.Yani ben once kullanıcıdan 2 tane tarih alıyorum.Bu tarih aralıgındaki verileri tabloya aktarıp sonra export ediyorum,bunla alakası olabilirmi? çok teşekkürler.

  10. Berkan Bilgin diyor ki:

    Şunu da hemen belirttim eger tablom page load da direk olarak dolu gelirse bi sorun olmuyor bilgilkendirmek istedim belki daha rahat yardımcı olabilirsiniz diye teşekkürler.

    • Mehmet KAPLAN diyor ki:

      Doldurma işlemini kod tarafında mı yapıyorsunuz yoksa asp tarafında mı?

      • Berkan Bilgin diyor ki:

        Kod tarafında
        cmd.Connection = Conn;
        cmd.CommandText = query;
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        da.SelectCommand = cmd;
        da.Fill(dt);
        DataGrid2.DataSource = dt;
        DataGrid2.DataBind();
        şeklinde normal bi tablo doldurma işlemi yapıyorum.Sinir oldum resmen neden böyle bişey olabilirki.Dediğim gibi , tabloyu eger pageload da kosulsuz olarak doldurtursam bi sorun olmuyor,ama zaten amacım akullanıcının verdiği tarihlere göre rapor almak.Yardımınızı bekliyorum sonsuz teşekkürler.

  11. Berkan Bilgin diyor ki:

    şöyle düşünüyorum , eğer sayfa load olgudunda tablo direk dolu gelirse evet sorun yok , direk cıktı alabiliyorum excelden ama eger “Raporla” butonuna basıp tablomu doldurursam ve tablom dolduktan sonra export to excel butonuna basarsam , excel e kaydediyo , fakat exceli actıgımda sadece column isimleri yazıyor.Eğer bu direk tabloyu bos goruyo olsaydı column name lerini nasıl alıcaktı onu anlamıyorum , cunku ben kod kısmında dolduruyorum tabloyu yani direk sqldatasource tan baglamadım veriyi hazır olarak.İnternette bi kaç yerde kod buldum adam direk bi tane instance olusturmus sonra o insance’ın id sini bizim gridimizin id sine eşitliyo fakat denedim yine olmuyor.Daha önce Hiç karşılaştınız mı acaba?Yada ben sanki yukarıda gecen yazmıs olan arkadasın sorunuyla aynı gibi düşünüyorum , onla teamviewer falan muhabbeti olmus belki çözmüşseniz , aynı sorunsa bunuda aynı şekilde çözeriz diye düşünmüştüm.Yani aklım durmus durumda hiç bi şekilde çözüm gelmiyo.Bu arada blog’u kirlettiğimin farkındayım cok fazla metin oldu , ama en azından çözüm belki birinin işini görmüş olur ..

    • Mehmet KAPLAN diyor ki:

      Düğmeye tıkladığınızda load olayının çalıştığına emin misiniz? Düğmenin AutoPostBack özelliği true mu? Breakpoint koyup, izleyip düğmeye tıkladığınızda load ekranındaki doldurma işleminin yapılıp yapılmadığına göz atın. İlk açıldığında gelip, bir olay çalıştırıldıktan sonra çalışmıyor olması DataTable’ın boşalmasını sağlıyor olabilir. Olmazsa Teamviewer’la göz atabilirim.

      • Berkan Bilgin diyor ki:

        Düğmenin autopostback özelliği true , fakat problemi çözdüm hemen sizede bildirmek istiyorum belki pek makul bi çözüm değildir ama🙂 :):) Ben kullanıcıdan tarih alıp,raporla butonuna bbasılmasıyla girilen tarih aralıgındaki degerleri tabloya aktarıyodum.Raporla butonun içindenki bütün kodu bi function yaptım private void ReporT() şeklinde ve raporla butonuna basıldıgı anda bu function ı cagırdım tablom doldu ve aynı şekilde excele aktar pdfYe aktar butonlarında da normalde sadece
        ASPxGridViewExporter1.WriteXlsToResponse(); ve ASPxGridViewExporter1.WritePdfToResponse();
        yazıyodu bunların öncesine bi de ReporT(); şeklinde function ımı bi daha cagırdım aslında kullanıcı gormuyo fakat tablo refreslenmiş oluyodu , ve suan veriler dolu geliyor.Şunun üstüne basa basa söylemek istiyorum MEHMET KAPLAN ALLAH SENDEN RAZI OLSUN!!! Bu kadar harika bi blog ve bu kadar fazla ilgi , daha ne diim bilmiyorum.Anasayfam yaptım blogu , normalde google dı anasayfam ama , zaten aradıgım herşeyde benı bu sayfaya atıyo🙂 Allah eksikliğinizi vermesin , teamviewer la da bakabilirm demişsiniz , çok çok çok teşekkür ederim sayenizde gerek kalmadı…Saygılar
        Berkan Bilgin.

      • Mehmet KAPLAN diyor ki:

        Çözebilmenize sevindim, kolay gelsin.

  12. Berkan Bilgin diyor ki:

    Bi soru daha sorucam yordum farkındayım ama son adım galiba🙂 Peki Raporum pdf formatındayken tek satıra sıgmıyo mesela , bi alt sayfadan devam ediyo sıgmayan columnlar.Nası fit leyebilirm

  13. Berkan Bilgin diyor ki:

    çok Teşekkürler …

  14. Berkan Bilgin diyor ki:

    Selamlar , aspxgridview da satır basındaki id leri linklemek istiyorum yani adam oraya tıkladıgı anda, seçilmiş olan id ile ilgili başka bir sayfa acılacak ve o sayfada kullanıcının (o id’ye sahip ) bilgileri baska bir tabloda gelecek.Bide mesela , id si 0123 olan bi kullanıcının rengini mavi bi sonrakinin beyaz, mavi beyaz şeklinde ilerlemesini istiyorum ama , şöyle bi sorun var hepsinden tek satır yok,yani id si 0123 olan kullanıcının rapor tablosunda 4 tane row’u var dyelim 67890 id li kullanıcının 8 tane olabilir.Ben de id ye göre renk vermek istiyorum.Yani her kullanıcı degiştigin de beyaz sa mavi , maviyse beyaz olucak sekilde.Umarım düzgün anatabilmişimdir.Yanlız sunu da belirtim bunu rapor cıktısı için değil sadece grid’in gorunumunde olsa kafi.Ve son hatta en büyük sorunlarımdan birisi, veri tabanında type’ı datatime olarak tanımladıgım tarih kısmı var, kullanıcıdan aspxdateedit ile tarih alıyorum , ama bu tarih direk aspxdateedit1.text olarak yollarsam , tabloya bastıracagım zaman sorun cıkıyor,convert yapılamadı diyor.Bende select konutunun içerisinde SET DATEFORMAT DMY kullanıyorum, fakat bu sefer verileri vasıyor basmasınada , rapor tuttugum için benm saate de ihtiyacım var i yani saatide bastırmasını istiyorum.Bu konularda eger bi bilginiz varsa yardımcı olurmusunuz, çok çok teşekkürler Mehmet Kardeş.

    • Mehmet KAPLAN diyor ki:

      Eğer ID’lerin link olarak çıkmasını istiyorsanız, o ID’e ait column’ı hyperlink olarak göstermeniz gerekiyor. Columns menüsünden yapabilirsiniz. Bunu yaptıktan sonra da tıklandığında bir başka sayfaya QueryString yardımıyla yönlendirebilirsiniz. QueryString’le ilgili araştırma yapabilirsiniz.

      Eğer değere göre renklendirme yapmak istiyorsanız, Row Style ya da benzeri olayları kullanmanız gerekiyor. (c#’da öyleydi) bunun için de http://www.devexpress.com‘a başvurabilirsiniz.

  15. Berkan Bilgin diyor ki:

    Teşekkürler , bi örnek buldum hyperlinkle ilgili aynen şöyle yazıyor
    “”””””””””””””””””””””””””””””””””””””””””””””””””
    her hyperlinkte bunu kullanmalısın

    navigateurl=”

    alan adı yazdığım kısımda id gibi bir şey kullanırsın. boylece griddeki her satır ayrı bir link olur

    “”””””””””””””””””””””””””””””””””””””””””””””””””
    ben columns’un özelliklerind ehyperlink properties kısmında navigationstring format var , navigateurl yok.Nasıl ayarlıcam bilmiyorum , acaba bu konuda yardımcı olabilirmisin,bide su yukarıda bahsettiğim tarih sorunu ile ilgili bi fikrin varmıydı onu merak ediyorum acıkcası

  16. Geri bildirim: WordPress’in 2010 İncelemesi « Mehmet KAPLAN

  17. mikail diyor ki:

    merhaba, ASPxGridViewExporter1.WriteXlsToResponse(); kodunda “Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.” hatası alıyorum. ne yaptıysam olmadı, nedeni ne olabilir?

    • Mehmet KAPLAN diyor ki:

      Merhaba, UpdatePanel kullanıyor musunuz?

      • mikail diyor ki:

        merhaba sorunu hallettim, ben servera callback ile gittigimden sayfada yenilenme olmadan indirmeye calısıyordum dosyayı, boyle yapınca indirmiodu, callback ile değilde direk butonun click eventine yazınca kodları calıştı. teşekkür ederim, iyi gunler

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: