none
Seleccionar fila de datagridview en c# e imprimir a pdf RRS feed

  • Pregunta

  • Buenos dias, estoy trabajando en una aplicacion desarrollada en c# con visual 2015. Anteriormente realizaba un reporte usando Crystal Reports, pero despues comenzo a darme muchos problemas y queria saber si es posible capturar los datos de la fila que selecciono del datagrid y pasarlo a pdf. Estuve intentado con itextsharp pero me realiza el reporte de toda la grilla, no de la fila seleccionada. Alguna idea? 

    Gracias!

    lunes, 18 de septiembre de 2017 16:01

Respuestas

  • Buenas tardes.

    Estuve realizando pruebas con itexsharp para exportar solo las filas seleccionadas primero cambio la propiedad del datagridview SelectionMode y elijo: FullRowSelect luego utilizo el siguiente código obtenido de Export selected row data to pdf in C# using iTextsharp

    private void button1_Click(object sender, EventArgs e)
            {
                iTextSharp.text.Font text = new iTextSharp.text.Font(iTextSharp.text.Font.NORMAL, 11);
    
                Document doc = new Document(PageSize.A2.Rotate(), 1, 1, 1, 1);
                PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("Test.pdf", FileMode.Create));
                doc.Open();
    
                PdfPTable pdftable = new PdfPTable(dataGridView1.ColumnCount - 0);
    
                for (int j = 0; j < dataGridView1.Columns.Count - 0; j++)
                {
                    PdfPCell cell = new PdfPCell(new Phrase(dataGridView1.Columns[j].HeaderText, text));
                    cell.BackgroundColor = BaseColor.LIGHT_GRAY;
                    pdftable.AddCell(cell);
                }
    
                pdftable.HeaderRows = 0;
                for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
                    
                {
                    for (int k = 0; k < dataGridView1.Columns.Count - 0; k++)
                    {
    
                        if (dataGridView1[i, k].Value != null)
                        {
                            pdftable.AddCell(new Phrase(dataGridView1.SelectedRows[i].Cells[k].Value.ToString(), text));
                            //pdftable.AddCell(new Phrase(dgvLoadAll[k, i].Value.ToString(), text));
    
                        }
                    }
                }
    
                //float[] widths = new float[] { 15f, 50f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f };
    
                // pdftable.SetWidths(widths);
                doc.Add(pdftable);
                doc.Close();
                System.Diagnostics.Process.Start("Test.pdf");
            }

    Según las pruebas realizadas solo exporta la fila seleccionada.

    Espero te sirva de ayuda.

    Saludos.

    lunes, 18 de septiembre de 2017 19:08

Todas las respuestas

  • De toda la grilla? Es que seguro le pasas el datatable... 

    si quieres pasarle solo la fila seleccionada deberias crear un datatable donde guardaras los elementos seleccionados en tu caso 1 pero tambien se puede hacer como parametros .

    Y que tipos de problemas te puede dar Crystal Reports si es muy bueno yo sigo con este desde sus inicios y no le veo error alguno tiene limitaciones pero ahi va bien.


    Pasa los puntos prro v:

    lunes, 18 de septiembre de 2017 16:15
  • Buenas tardes.

    Estuve realizando pruebas con itexsharp para exportar solo las filas seleccionadas primero cambio la propiedad del datagridview SelectionMode y elijo: FullRowSelect luego utilizo el siguiente código obtenido de Export selected row data to pdf in C# using iTextsharp

    private void button1_Click(object sender, EventArgs e)
            {
                iTextSharp.text.Font text = new iTextSharp.text.Font(iTextSharp.text.Font.NORMAL, 11);
    
                Document doc = new Document(PageSize.A2.Rotate(), 1, 1, 1, 1);
                PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("Test.pdf", FileMode.Create));
                doc.Open();
    
                PdfPTable pdftable = new PdfPTable(dataGridView1.ColumnCount - 0);
    
                for (int j = 0; j < dataGridView1.Columns.Count - 0; j++)
                {
                    PdfPCell cell = new PdfPCell(new Phrase(dataGridView1.Columns[j].HeaderText, text));
                    cell.BackgroundColor = BaseColor.LIGHT_GRAY;
                    pdftable.AddCell(cell);
                }
    
                pdftable.HeaderRows = 0;
                for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
                    
                {
                    for (int k = 0; k < dataGridView1.Columns.Count - 0; k++)
                    {
    
                        if (dataGridView1[i, k].Value != null)
                        {
                            pdftable.AddCell(new Phrase(dataGridView1.SelectedRows[i].Cells[k].Value.ToString(), text));
                            //pdftable.AddCell(new Phrase(dgvLoadAll[k, i].Value.ToString(), text));
    
                        }
                    }
                }
    
                //float[] widths = new float[] { 15f, 50f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f, 40f };
    
                // pdftable.SetWidths(widths);
                doc.Add(pdftable);
                doc.Close();
                System.Diagnostics.Process.Start("Test.pdf");
            }

    Según las pruebas realizadas solo exporta la fila seleccionada.

    Espero te sirva de ayuda.

    Saludos.

    lunes, 18 de septiembre de 2017 19:08
  • Muchas gracias por tu ayuda, me sirvió perfectamente! 

    Saludos

    lunes, 18 de septiembre de 2017 23:17