1 Mayıs 2013 Çarşamba

C# (sharp) Datagridview Hücrelerini PDF dosyası olarak export etmek.


// iTextSharp.text Dll ini indirmeniz gerek ve add references deyip eklemelisiniz.
//İndirebileceğiniz adres http://sourceforge.net/projects/itextsharp/

// Eklenmesi gerek namespaceler
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
using System.Windows.Forms;



// Pdf export etme classımız
class PDFExport
    {
        public string FileName { get; set; } //pdf oluşturacağımız dosya adı
        public string Text { get; set; } //dosyanın içinde oluşturacağımız pdf adı
        public int PdfRowIndex { get; set; } //pdfrowindex
        public string Path { get; set; }

        public DataTable ToDatatable()
        {
            //DataTable Oluştur            
            DataTable dt = new DataTable("");
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));
            dt.Columns.Add(new DataColumn("", typeof(string)));

            return dt;

        }
        public void ToPdf(DataGridView dgGecKalanKitap)
        {

            DataTable dtPDF = ToDatatable();
            iTextSharp.text.Document document = new iTextSharp.text.Document();
            string dosya = "C:\\Kütüphane Otamasyonu\\gecKalan.pdf"; //PDF imiz nereye kayıt edilecek ?
            PdfWriter.GetInstance(document, new FileStream(dosya, FileMode.Create));
            BaseFont arial = BaseFont.CreateFont("C:\\windows\\fonts\\arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            Font font = new Font(arial, 12, Font.NORMAL);
            document.Open();
            PdfPTable table = null;
            table = new PdfPTable(dgGecKalanKitap.Columns.Count);
            table.WidthPercentage = 100;
            string str = string.Empty;
            for (int i = 0; i < dgGecKalanKitap.Columns.Count; i++)
            {
                str += dgGecKalanKitap.Columns[i].HeaderText;
                if (dgGecKalanKitap.Columns.Count > i)
                    str += "+";
            }

            string str2 = str.TrimEnd('+').ToString();

            ///<summary></summary>
            /// DataGridView kolonlarının sayısı kadar belgenin başlıkları doldurulur.
            /// Pdf hücreleri oluşturulur.Dökumandaki başlık kısmı için ilk satır oluşturulur ve colspan yapılır.
            ///

            PdfPCell cell = new PdfPCell(new Phrase(dosya));
            cell.Colspan = dgGecKalanKitap.Columns.Count;
            cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
            table.AddCell(cell);

            ///<summary></summary>
            ///pdf tablosu hücreleri doldurulur
            ///

            for (int i = 0; i < dgGecKalanKitap.Columns.Count; i++)
            {
                table.AddCell(new Phrase(dgGecKalanKitap.Columns[i].HeaderText, font));
            }

            for (int i = 0; i < dtPDF.Rows.Count; i++)
            {
                for (int j = 0; j < dtPDF.Columns.Count; j++)
                {
                    table.AddCell(new Phrase(dtPDF.Rows[i][j].ToString(), font));

                    PdfRowIndex++;
                }
            }
            document.Add(table);

            MessageBox.Show("Kaydınız Başarıyla Tamamlanmıştır!" + "\n" + "Kayıt Yeri" + " " + dosya, "Aktarım Sonucu", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            document.Close();
        }

        /// <summary></summary>
     
     
    }


// Classımız yukardaki şimdi ise bunu istediğimiz yerde kullanalım. Sadece aşağıdaki gibi
// Kullanım export için yeterlidir. Geri kalan kısmını yukardaki class halledecektir.
// Sadece datagridview ismini düzgün vermeniz yeterli.

private void Gec_Kalan_Kitaplar_Load(object sender, EventArgs e)
        {
            EXCELPDFExporter PdfExport = new EXCELPDFExporter(); 
            PdfExport.FileName = this.Name;
            PdfExport.Text = PdfExport.FileName + ".pdf";
            PdfExport.PdfRowIndex = 1;
            PdfExport.ToPdf(dataGridView1); // Hangi datagridview içinde ki verileri PDF olarak export edeceğiz
        }

10 yorum:

77 dedi ki...

EXCELPDFExporter nesnesini tanımıyor

Mustafa dedi ki...

nerde tanımıyor acaba ? Daha detaylı bilgi verirsen yardımcıolmaya çalışayım

Solar Projects dedi ki...

PDF olarak kullandığımda benım datagrid imde hücre sayısı biraz fazla A4 kağıdını dikey olarak algılıyor. hucreleri kagıdın yatayına göre ayarlattırabılırmıyız ?

Adsız dedi ki...

mustafa bey buradaki iTextSharp.text Dll indirmiyor nasıl indirebiliriz

Mustafa Erdoğmuş dedi ki...

Tekrar denermisiniz

Adsız dedi ki...

aygıt hazır değil uyarısı veriyor, PdfWriter.GetInstance(document, new FileStream(dosya, FileMode.Create)); satırında, teşekkürler

Adsız dedi ki...

hocam kolay gelsin

bir projem var.. projede picturebox gelen image ve sql kayıt edilmiş resimleri PDF aktarmak istiyorum..
nette araştırdım çok sağlıklı kaynak bulamadım bu konuda yardım edermisiniz..
teşkkürler

Adsız dedi ki...

hocam kolay gelsin

bir projem var.. projede picturebox gelen image ve sql kayıt edilmiş resimleri PDF aktarmak istiyorum..
nette araştırdım çok sağlıklı kaynak bulamadım bu konuda yardım edermisiniz..
teşkkürler

Adsız dedi ki...

Dostum excelpdfexport classını unuttun sanırım?

Mustafa Erdoğmuş dedi ki...

Herhangi bir eksik yok çalışır durumdadır