Exportar datos de Datagridview A PDF, Lenguaje C#





BUEN DÍA MUCHACHOS EN ESTE POST LES EXPLICARE COMO ENVIAR DATOS DE UN GRIDVIEW A
UN PDF DESDE C#.. BN EMPECEMOS

--YA SABEN QUE NECESITAREMOS EL Itextsharp.dll Y REFERENCIARLO EN EL PROYECTO--
UNA VEZ HECHO ESTO AÑADAN LAS SIGUIENTES REFERENCIAS:

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Diagnostics;
using System.IO;

EN ESTE CASO YO UTILICE

.. 1 GRIDVIEW
.. 1 COMBOBOX
.. 1 BOTON 

//DISCULPEN POR EL DESORDEN 

//BOTON
 private void btnpdf_Click(object sender, EventArgs e)
       {
         if (dtalumnos.RowCount == 0)
         { MessageBox.Show("No Hay Datos Para Realizar Un Reporte", "Mensaje",                                     MessageBoxButtons.OK, MessageBoxIcon.Information);
           }
           else
           {
              //ESCOJE A RUTA DONDE GUARDAREMOS EL PDF
               SaveFileDialog save = new SaveFileDialog();
               save.Filter = "PDF Files (*.pdf)|*.pdf|All Files (*.*)|*.*";
               if (save.ShowDialog() == DialogResult.OK)
               {
                   string filename = save.FileName;
                   DateTime hora = DateTime.Now;
     string fcha_ttal = Convert.ToDateTime(hora).Day + "/" + Convert.ToDateTime(hora).Month + "/" + Convert.ToDateTime(hora).Year;
                   Document doc = new Document(PageSize.A3, 9, 9, 9, 9);
                   iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(@"C:UsersCAMILOMis Documentosvideos1.JPG"); jpg.Alignment = iTextSharp.text.Image.ALIGN_RIGHT;
                   //iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(@"C:Userspc23DocumentsProfe6.JPG"); jpg.Alignment = iTextSharp.text.Image.ALIGN_RIGHT;
                   Chunk encab = new Chunk("Alumnos De " + cmbcurso.Text + " ", FontFactory.GetFont("COURIER", 18));
                   Chunk ap = new Chunk("REPORTE " + fcha_ttal + " ", FontFactory.GetFont("COURIER", 18));
                   try
                   {
                       FileStream file = new FileStream(filename, FileMode.OpenOrCreate);
                       PdfWriter writer = PdfWriter.GetInstance(doc, file);
                       writer.ViewerPreferences = PdfWriter.PageModeUseThumbs;
                       writer.ViewerPreferences = PdfWriter.PageLayoutOneColumn;
                       doc.Open();

                       doc.Add(new Paragraph(encab));
                       doc.Add(new Paragraph(ap));
                       doc.Add(jpg);
                       GenerarDocumentos(doc);

                       Process.Start(filename);
                       doc.Close();
                   }

                   catch (Exception ex)
                   {
                       MessageBox.Show(ex.Message);
                   }
               }
           }
           
       }

 
      //Función que genera el documento Pdf
       public void GenerarDocumentos(Document document)
       {
           //se crea un objeto PdfTable con el numero de columnas del dataGridView 
           PdfPTable datatable = new PdfPTable(dtalumnos.ColumnCount);
           //asignamos algunas propiedades para el diseño del pdf 
           datatable.DefaultCell.Padding = 1;
           float[] headerwidths = GetTamañoColumnas(dtalumnos);

           datatable.SetWidths(headerwidths);
           datatable.WidthPercentage = 100;
           datatable.DefaultCell.BorderWidth = 1;

           datatable.DefaultCell.BackgroundColor = iTextSharp.text.BaseColor.WHITE;//DEFINIMOS EL COLOR DE LAS CELDAS EN EL PDF
           datatable.DefaultCell.BorderColor = iTextSharp.text.BaseColor.BLACK;//DEFINIMOS EL COLOR DE LOS BORDES
           iTextSharp.text.Font fuente = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA);//LA FUENTE DE NUESTRO TEXTO

           Phrase objP = new Phrase("A", fuente);

           datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;

           //SE GENERA EL ENCABEZADO DE LA TABLA EN EL PDF 

           for (int i = 0; i < dtalumnos.ColumnCount; i++)
           {

               objP = new Phrase(dtalumnos.Columns.HeaderText, fuente);
               datatable.HorizontalAlignment = Element.ALIGN_CENTER;

               datatable.AddCell(objP);

           }
           datatable.HeaderRows = 2;

           datatable.DefaultCell.BorderWidth = 1;

           //SE GENERA EL CUERPO DEL PDF
           for (int i = 0; i < dtalumnos.RowCount; i++)
           {
               for (int j = 0; j < dtalumnos.ColumnCount; j++)
               {
                   objP = new Phrase(dtalumnos[j, i].Value.ToString(), fuente);
                   datatable.AddCell(objP);
               }
               datatable.CompleteRow();
           }
           document.Add(datatable);
       }

       //Función que obtiene los tamaños de las columnas del datagridview
       public float[] GetTamañoColumnas(DataGridView dg)
       {
           float[] values = new float[dg.ColumnCount];//ESTE ARRAY GUARDA EL NUMERO DE COLUMNAS DEL GRIDVIEW
           for (int i = 0; i < dg.ColumnCount; i++)
           {
               values = (float)dg.Columns.Width;//VAYA ASIGNANDO A UNA POSICION DEL VECTOR EL ANCHO DE CADA COLUMNA
           }
           return values;
       }


BN ESO FUE TODO ESPERO QUE LES HAYA SERVIDO ESTE POST YA SABEN QUE PUEDEN HACER MODIFICACIONES Y AJUSTARLO A SU AGRADO 
SUSCRIBANSE Y DEJEN PUNTOS JEJEJEJEJEEJE 

Exportar datos de Datagridview A PDF, Lenguaje C#
17 Puntos Score: 4.3/10
Visitas: 3124 Favoritos: 6
Ver los usuarios que votaron...
8 Comentarios Exportar datos de Datagridview A PDF, Lenguaje C#
habra que probarlo  
yo lo hago con reportviewer y de ahi exporto a excel o pdf
gracias por el aporte, @kalel89 deberias subir post con un ejemplo con el reportviewer suena interesante
Interesante, deber?
@kalel89 Hola, oye puedes exportar todo un gridview a reportviewer? incluso si el grid genera sus propias columnas??


Saludos
Con esto exportas un datatable

Dim FIELDSEPARATOR As String = Chr(9)
Dim ROWSEPARATOR As String = Chr(13)
Dim ArchivoFinal as string = 'Ruta donde se guarda el archivo' & FileName & ".xls"

Dim oFile As New IO.StreamWriter(ArchivoFinal , False)

            If InsertColumnsName Then
                For Each Columna As DataColumn In dtTable.Columns
                    oFile.Write(Columna.ColumnName)
                    oFile.Write(FIELDSEPARATOR)
                Next
            End If

            For Each oRow As DataRow In dtTable.Rows
                oFile.Write(ROWSEPARATOR)
                For Each Value As Object In oRow.ItemArray
                    Select Case Value.GetType.ToString.ToUpper
                        Case "SYSTEM.STRING"
                            If Value.ToString.Trim.Length > 11 And IsNumeric(Value.ToString.Trim) Then
                                oFile.Write("'" & Value.ToString.Trim.Replace(ROWSEPARATOR, " ").Replace(FIELDSEPARATOR, " "))
                            Else
                                oFile.Write(Value.ToString.Trim.Replace(ROWSEPARATOR, " ").Replace(FIELDSEPARATOR, " "))
                            End If
                        Case Else
                            oFile.Write(Value)
                    End Select
                    oFile.Write(FIELDSEPARATOR)
                Next
                oFile.Flush()
            Next

            oFile.Close()
            oFile.Dispose()
            oFile = Nothing

Process.Start(ArchivoFinal)
una pregunta bro, me marca muchos errores, quisera creer que es desde el inicio que marca error en...
using iTextSharp.text;
using iTextSharp.text.pdf;
tienes que descargar alguna libreria o poner alguna referencia?
Buena onda con el codigo =D, aunque tiene un par de fallas, talvez la version de framework que uso, pero no estoy seguro, en la parte de generar el encabezado deberia ser asi:  
objP = new Phrase(dgvBuscar.Columns.HeaderText, fuente)
la , para que recorra las columnas... a mi me funciono asi.
buen aporte =)
Para dejar un comentario Registrate! o.. eres ya usuario? Accede!