İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# DataGridView PDF Oluşturma – Dışa Aktarma

C# DataGridView PDF Oluşturma – Dışa Aktarma
+ - 5

Merhabalar, C# DataGridView PDF Oluşturma – Dışa Aktarma dersim ile C# eğitim setime devam ediyorum. Bu dersimde C# DataGridView’i PDF olarak dışa aktarma işlemini anlatmaya çalışacağım. Daha önceleri Excel olarak dışa aktarmayı anlatmıştım. Bu pdf olarak dışa aktarma işleminde DataGridView’deki verileri hücre hücre dışa aktarmayı göreceğiz.

C# DataGridView PDF Oluşturma – Dışa Aktarma

C€ DataGeidView PDF Dışa aktarma işlemini foreach döngüleri ile hücreleri gezerek bir tablo oluşturup, bu tabloyu pdf dosyası olarak kaydetme işlemine bakacağız. Burada vereceğim kodlar verileri basit bir tablo görüntüsü olarak dışa aktarmaktadır. Amaç sadece PDF olarak dışa aktarmak olduğundan özelleştirme yapılamamaktadır.

Bu işlemi yapabilmek için aşağıdaki namespaceleri ekliyoruz.

using iTextSharp.text;
using iTextSharp.text.pdf;

Yukarıdakş namespaceleri projemize ekleyebilmemiz için ilgili kütüphanenin NUGET üzerinden indirilmesi ve kurulması gerekmektedir. Bu işlem için Solution Explorer kısmından projemizin üzerine sağ tık yapıyoruz ve Manage Nuget Packages diyoruz. Açılan ekranda Browse kısmına gelerek arama kutusuna iTextSharp yazarak ilk sırada çıkan kütüphaneyi indirip kuruyoruz.

C# iTextSharp kütüphanesi ekli olmadan yukarıdaki namespaceleri’de ekleyemeyiz.

C# DataGridView PDF Oluşturma

Şimdi kodlarımızı yazmaya geçebiliriz.

Dışa aktarma işlemini yaparken, SaveFileDialog nesnesini de kullanacağız. Bu sayede dışa aktarılacak PDF dosyasının nereye ve hangi adla kaydetmek istiyorsak seçebileceğiz. Bu kodları pek bilmediğim için anlatabileceğim çok fazla şey yok. Kopyalayıp yapıştırın ve kullanın. :)

public static void PDF_Disa_Aktar(DataGridView dataGridView1)
        {
            SaveFileDialog save = new SaveFileDialog();
            save.OverwritePrompt = false;
            save.Title = "PDF Dosyaları";
            save.DefaultExt = "pdf";
            save.Filter = "PDF Dosyaları (*.pdf)|*.pdf|Tüm Dosyalar(*.*)|*.*";
            if (save.ShowDialog() == DialogResult.OK)
            {
                PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
                
                // Bu alanlarla oynarak tasarımı iyileştirebilirsiniz.
                pdfTable.DefaultCell.Padding = 3; // hücre duvarı ve veri arasında mesafe
                pdfTable.WidthPercentage = 80; // hücre genişliği
                pdfTable.HorizontalAlignment = Element.ALIGN_LEFT; // yazı hizalaması
                pdfTable.DefaultCell.BorderWidth = 1; // kenarlık kalınlığı
                // Bu alanlarla oynarak tasarımı iyileştirebilirsiniz.

                foreach (DataGridViewColumn column in dataGridView1.Columns)
                {
                    PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText));
                    cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240); // hücre arka plan rengi
                    pdfTable.AddCell(cell);
                }
                try
                {
                    foreach (DataGridViewRow row in dataGridView1.Rows)
                    {
                        foreach (DataGridViewCell cell in row.Cells)
                        {
                            pdfTable.AddCell(cell.Value.ToString());
                        }
                    }
                }
                catch (NullReferenceException)
                {
                }
                using (FileStream stream = new FileStream(save.FileName + ".pdf", FileMode.Create))
                {
                    Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);// sayfa boyutu.
                    PdfWriter.GetInstance(pdfDoc, stream);
                    pdfDoc.Open();
                    pdfDoc.Add(pdfTable);
                    pdfDoc.Close();
                    stream.Close();
                }
            }
        }

Yukarıda “//Bu alanlarla oynarak tasarımı iyileştirebilirsiniz.”  olarak ayırdığım kısım tablonun genişliği, veri ile hücre duvarı arasındaki pixel mesafesi ve kenarlıkların kalınlığı gibi görsel değişikler yapabilirsiniz. Ölçüler ile oynayarak istediğiniz görüntüye yakın bir şeyler elde edebilirsiniz.

SaveFileDialog kullanmak istemiyorsanız, ilgili kodları silerek;

 using (FileStream stream = new FileStream(save.FileName + ".pdf", FileMode.Create))

satırındaki “save.FileName” kısmına direk yolu ve adı yazabilirsiniz.

Bir Class İle Kullanmak

Bu metodu olduğu gibi bir Class içerisine alabilirsiniz. İlk satırda gördüğünüz gibi bu metod DataGridView nesnesi alan bir parametreye sahip. Bu kodlara bir class dosyası içerisine aldıktan sonra aşağıdaki gibi tek satır olarak kullanabilirsiniz.

DısaAktarmalar.PDF_Disa_Aktar(dataGridView1);

Burada bu kodlarımı eklediğim class’ımın adı DısaAktarmalar ‘dır.

 


C# DataGridView PDF Oluşturma – Dışa Aktarma dersimizde bu kadardı arkadaşlar. Diğer derslerimizde görüşmek üzere…

Arkadaşlar sağ tarafa Facebook sayfamın feed kutusunu ekledim. Oradan sayfamı beğenerek bana destek olabilirsiniz. Teşekkürler.

Ek bir DLL gerektirdiğinden bu dersi Github projeme eklemiş olsam da çalışmayacaktı bu sebeple eklemedim.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Sağlıcakla ve takipte kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (5)

  1. 2 sene önce

    Hocam emeğinize sağlık. Datagridviewde belirli kolanların pdf aktarılması sağlamak font size gibi ayarlar ile datagridi pdf ye kayıt ederken pdf sayfasının yatay olması gibi durumları nasıl düzenleyebiliriz.

  2. Hocam çok güzel istediğimiz şekilde pdf oluyor tek sorun datagridviewde resim var fakat resimleri System.Drawing.
    Bitmap diye yazı halinde gösteriyor bunu nasıl düzeltebiliriz?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.