ProAkademi.NET
 
 Web Programlama Web Programlama
 Programlama Programlama
 Grafik Grafik
 Veri Tabanı Veri Tabanı
 İşletim Sistemleri İşletim Sistemleri
 Network Network
 Donanım Donanım
 Güvenlik Güvenlik
 Genel Konular Genel Konular
  KATEGORİLER
 
Kullanıcı Adı :
Şifre :
  ÜYE GIRISI
 
 
  Hakkımızda
  Forum
  Blog
  Haberler
  İpuçları
  Destekleyenler
  İletişim
  PROAKADEMİ.NET
 
Son Üye : Superisi
Kayıtlı Üye : 518
  İSTATİSTİKLER
 
 
Ana Sayfa > Makale > Web Programlama > ASP.NET
 
ASP.NET Gridview daki Kayıtları Word, Excel, PDF ve CSV Formatlarına Aktarma
 
Bu makalemizde Gridview daki kayıtlarımızı Word, Excel, PDF ve CSV formatlarına nasıl aktaracağımızı öğreneceğiz. ASP.NET ile Word,Excel ve CSV formatlarına 3. parti yazılımlar gerektirmeden kolayca aktarım sağlarken , PDF e veri aktarımında ise ücretsiz 3. parti bir yazılım olan iTextSharp tool unu kullanacağız.
 

Öncelikle aktarım için Gridview içerisinde biraz veri bulunması gerekmekte. Bunun için Northwind Database nden Customers kayıtlarını Gridview e dolduruyorum. Gridview’mızın HTML çıktısı aşağıdaki gibidir ;

<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false" font-names="Arial"
font-size="11pt" alternatingrowstyle-backcolor="#C2D69B" headerstyle-backcolor

="green"
allowpaging="true" onpageindexchanging="OnPaging">
<Columns>
<asp:BoundField ItemStyle-Width = "150px" DataField = "CustomerID"
HeaderText = "CustomerID" />
<asp:BoundField ItemStyle-Width = "150px" DataField = "City"
HeaderText = "City"/>
<asp:BoundField ItemStyle-Width = "150px" DataField = "Country"
HeaderText = "Country"/>
<asp:BoundField ItemStyle-Width = "150px" DataField = "PostalCode"
HeaderText = "PostalCode"/>
</Columns>
</asp:gridview>

 

Gridview mızı hazırladıktan sonra altına 4 tane buton ekliyoruz.
  1. Export To Word
  2. Export To Excel
  3. Export To PDF
  4. Export To CSV



Microsoft Word Formatına Veri Aktarımı

C#

 

 

protected void btnExportWord_Click(object sender, EventArgs e) {
  // İçeriği yüklemeden önce ekrandaki çöpleri temizliyoruz
  Response.Clear();
  Response.Buffer = true;
  Response.AddHeader("content-disposition","attachment;filename=GridViewExport.doc");
  Response.Charset = "";
  Response.ContentType = "application/vnd.ms-word ";
  StringWriter sw= new StringWriter();
  HtmlTextWriter hw = new HtmlTextWriter(sw);
  // Gridviewdakı bütün verileri aktarabilmek için sayfalama özelleğini iptal edip , Gridview’mızdaki değişikliklerin geçerli olabilmesi için tekrar dolduruyoruz
  GridView1.AllowPaging = false;
  GridView1.DataBind();
  // Gridview’daki değerlerimizi html formatına renderlıyoruz
  GridView1.RenderControl(hw);
  Response.Output.Write(sw.ToString());
  Response.Flush();
  Response.End(); }


VB.Net

Protected Sub btnExportWord_Click(ByVal sender As Object, ByVal e As EventArgs)
  Response.Clear()
  Response.Buffer = True
  Response.AddHeader("content-disposition","attachment;filename=GridViewExport.doc")
  Response.Charset = ""
  Response.ContentType = "application/vnd.ms-word "
  Dim sw As New StringWriter()
  Dim hw As New HtmlTextWriter(sw)
  GridView1.AllowPaging = False
  GridView1.DataBind()
  GridView1.RenderControl(hw)
  Response.Output.Write(sw.ToString())
  Response.Flush()
  Response.End()
End Sub


Not : C# içerisinde yazdığım açıklamalar VB.Net tarafı içinde geçerlidir. Eğer eksiksiz kodu yazdıysanız alttaki gibi bir çıktı elde edeceksiniz.



Microsoft Excel Formatına Veri Aktarımı

C#
 

protected void btnExportExcel_Click(object sender, EventArgs e) {
  Response.Clear();
  Response.Buffer = true;
  Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
  Response.Charset = "";
  Response.ContentType = "application/vnd.ms-excel";
  StringWriter sw = new StringWriter();
  HtmlTextWriter hw = new HtmlTextWriter(sw);
  GridView1.AllowPaging = false;
  GridView1.DataBind();
  //Başlık rowlarının arka planını beyaz olarak ayarlıyoruz.
  GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");
  //Şimdide hücre başlıklarının arka planını yeşil yapıyoruz
  GridView1.HeaderRow.Cells[0].Style.Add("background-color", "green");
  GridView1.HeaderRow.Cells[1].Style.Add("background-color", "green");
  GridView1.HeaderRow.Cells[2].Style.Add("background-color", "green");
  GridView1.HeaderRow.Cells[3].Style.Add("background-color", "green");
  for (int i = 0; i < GridView1.Rows.Count;i++ )
 {
     GridViewRow row = GridView1.Rows[i];
     //Arka plan rengini beyaz olarak ayarlıyoruz
     row.BackColor = System.Drawing.Color.White;
     //Her row’un text özelliğine bir class atıyoruz
     row.Attributes.Add("class", "textmode");
     //Biraz daha güzellik katmak için 2. Row’ların arka planlarına farklı bir renk veriyoruz
          if (i % 2 != 0)
          {
               row.Cells[0].Style.Add("background-color", "#C2D69B");
               row.Cells[1].Style.Add("background-color", "#C2D69B");
               row.Cells[2].Style.Add("background-color", "#C2D69B");
               row.Cells[3].Style.Add("background-color", "#C2D69B");
          }
  }
  GridView1.RenderControl(hw);
  //Sayısal formatların bozuk çıkmaması için format belirliyoruz
  string style = @" ";
  Response.Write(style);
  Response.Output.Write(sw.ToString());
  Response.Flush();
  Response.End();


VB.Net

PProtected Sub btnExportExcel_Click(ByVal sender As Object, ByVal e As EventArgs)
     Response.Clear()
     Response.Buffer = True
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls")
     Response.Charset = ""
     Response.ContentType = "application/vnd.ms-excel"
     Dim sw As New StringWriter()
     Dim hw As New HtmlTextWriter(sw)
     GridView1.AllowPaging = False
     GridView1.DataBind()
     GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF")
     GridView1.HeaderRow.Cells(0).Style.Add("background-color", "green")
     GridView1.HeaderRow.Cells(1).Style.Add("background-color", "green")
     GridView1.HeaderRow.Cells(2).Style.Add("background-color", "green")
     GridView1.HeaderRow.Cells(3).Style.Add("background-color", "green")
     For i As Integer = 0 To GridView1.Rows.Count - 1
          Dim row As GridViewRow = GridView1.Rows(i)
          row.BackColor = System.Drawing.Color.White
          row.Attributes.Add("class", "textmode")
          If i Mod 2 <> 0 Then
               row.Cells(0).Style.Add("background-color", "#C2D69B")
               row.Cells(1).Style.Add("background-color", "#C2D69B")
               row.Cells(2).Style.Add("background-color", "#C2D69B")
               row.Cells(3).Style.Add("background-color", "#C2D69B")
          End If
     Next
     GridView1.RenderControl(hw)
     Dim style As String = " "
     Response.Write(style)
     Response.Output.Write(sw.ToString())
     Response.Flush()
     Response.End()
End Sub br />

C# içerisinde yazdığım açıklamalar VB.Net tarafı içinde geçerlidir. Eğer eksiksiz kodu yazdıysanız alttaki gibi bir çıktı elde edeceksiniz.



PDF Formatına Veri Aktarımı
Gridview içerisindeki verileri PDF formatına aktarmak için ücretsiz bir yazılım olan iTextSharp kütüphanesini kullanacağız. Bunun için projenize iTextSharp kütüphanesini projenize ekliyorsunuz ve aşağıdaki namespace ‘leri sayfanıza ekliyorsunuz.

C#

using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
 


VB.Net

Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.html
Imports iTextSharp.text.html.simpleparser
 



Not: Eğer PDF’inizin görselliği ile oynamak isterseniz iTextSharp bunu desteklemez.

C#
 

protected void btnExportPDF_Click(object sender, EventArgs e)
{
     Response.ContentType = "application/pdf";
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
     Response.Cache.SetCacheability(HttpCacheability.NoCache);
     StringWriter sw = new StringWriter();
     HtmlTextWriter hw = new HtmlTextWriter(sw);
     GridView1.AllowPaging = false;
     GridView1.DataBind();
     GridView1.RenderControl(hw);
     StringReader sr = new StringReader(sw.ToString());
     Document pdfDoc = new Document(PageSize.A4, 10f,10f,10f,0f);
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
     pdfDoc.Open();
     htmlparser.Parse(sr);
     pdfDoc.Close();
     Response.Write(pdfDoc);
     Response.End();
}


VB.Net

 

Protected Sub btnExportPDF_Click(ByVal sender As Object, ByVal e As EventArgs)
     Response.ContentType = "application/pdf"
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf")
     Response.Cache.SetCacheability(HttpCacheability.NoCache)
     Dim sw As New StringWriter()
     Dim hw As New HtmlTextWriter(sw)
     GridView1.AllowPaging = False
     GridView1.DataBind()
     GridView1.RenderControl(hw)
     Dim sr As New StringReader(sw.ToString())
     Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F)
     Dim htmlparser As New HTMLWorker(pdfDoc)
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream)
     pdfDoc.Open()
     htmlparser.Parse(sr)
     pdfDoc.Close()
     Response.Write(pdfDoc)
     Response.End()
End Sub


Eğer eksiksiz kodu yazdıysanız alttaki gibi bir çıktı elde edeceksiniz.



CSV Formatına Veri Aktarımı

En son konumuz olan CSV formatına veri aktarımına geldik. Burada belirleyeceğiniz bir karakter ile verilerinizi birbirinden ayırmanız gerekmektedir. Ben “,” karakterini kullanacağım.

C#
 

protected void btnExportCSV_Click(object sender, EventArgs e)
{
     Response.Clear();
     Response.Buffer = true;
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv");
     Response.Charset = "";
     Response.ContentType = "application/text";
     GridView1.AllowPaging = false;
     GridView1.DataBind();
     StringBuilder sb = new StringBuilder();
     for (int k = 0; k < GridView1.Columns.Count; k++)
     {
          //Ayıraç belirliyoruz
          sb.Append(GridView1.Columns[k].HeaderText + , );
     }
     //Yeni bir satır ekliyoruz
     sb.Append(" ");
     for (int i = 0; i < GridView1.Rows.Count; i++)
     {
          for (int k = 0; k < GridView1.Columns.Count; k++)
          {
          // Ayıraç belirliyoruz
          sb.Append(GridView1.Rows[i].Cells[k].Text + , );
          }
      //Yeni bir satır ekliyoruz
     sb.Append(" ");
     }
     Response.Output.Write(sb.ToString());
     Response.Flush();
     Response.End();
}    


VB.Net

PProtected Sub btnExportCSV_Click(ByVal sender As Object, ByVal e As EventArgs)
     Response.Clear()
     Response.Buffer = True
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.csv")
     Response.Charset = ""
     Response.ContentType = "application/text"
     GridView1.AllowPaging = False
     GridView1.DataBind()
     Dim sb As New StringBuilder()
     For k As Integer = 0 To GridView1.Columns.Count - 1
     sb.Append(GridView1.Columns(k).HeaderText + ","c)
     Next
     sb.Append(vbCr & vbLf)
     For i As Integer = 0 To GridView1.Rows.Count - 1
     For k As Integer = 0 To GridView1.Columns.Count - 1
     sb.Append(GridView1.Rows(i).Cells(k).Text + ","c)
     Next
     sb.Append(vbCr & vbLf)
     Next
     Response.Output.Write(sb.ToString())
     Response.Flush()
     Response.End()
End Sub


Eğer eksiksiz kodu yazdıysanız alttaki gibi bir çıktı elde edeceksiniz.



Projenizi ilk çalıştırdığınızda verileri export etmek istediğinizde aşağıdaki gibi bir hata ile karşılacaksınız.


Gridview nesnesinin export işleminden önce render edilmemiş olması. Bunun için aşağıdaki kod bloğunu projemize ekliyoruz.

C#

Public override void VerifyRenderingInServerForm(Control control)
{
/* Kontrolün renderlandığı doğrulanıyor */
}


VB.Net

Public Overloads Overrides Sub VerifyRenderingInServerForm (ByVal control As Control)
Kontrolün renderlandığı doğrulanıyor
End Sub

Bir makalemizin daha sonuna geldik. Makale ile ilgili sorularınızı mail adresimden bana ulaşarak sorabilirsiniz.

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist
volkankorkmaz@gmail.com
http://www.volkankorkmaz.net

 
Etiketler: Asp.NET Export Gridview to PDF Export Gridview to Word Export Gridview to Excel Export Gridview to CSV
 
Yazar: Volkan Korkmaz
Tarih: 26.01.2010 06:00:13 | Okuma: 4230 | Oy: 2,83333333333333

EkleBunu Sosyal Paylaşım Butonu

Eklenmiş yorum bulunmuyor!

Yorum Ekle
Yorum eklemek için kayıtlı üye olmanız gerekiyor! Üye olmak için tıklayınız.

 
Copyright 2008 ProAkademi.NET (v 1.4) - Tüm hakları saklıdır.
Tasarım: Hüseyin YILDIRIM [AriSToR] // ZirveArt
Clicky Web Analytics
 
 
Buluton Yazilim ve Internet Hizmetleri