none
Error en exportacion de DataGridView a PDF C#

    Pregunta

  • Buenas, lo que pasa es que estoy implementando el siguiente codigo para exportar mi datagrid a documento pdf, el codigo me funciona, pero cuando boy a la ruta que guarde mi documento y lo boy a abrir, me bota un error.

    este es el codigo que estoy usando

    private void btn_pdf_Click(object sender, EventArgs e)
            {
                if (dataGrid_pedido.RowCount == 0)
                {
                    MessageBox.Show("No Hay Datos Para Realizar Un Reporte");
                }
                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;
                        Document doc = new Document(PageSize.A3, 9, 9, 9, 9);
                        Chunk encab = new Chunk("REPORTE", 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));
                            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(dataGrid_pedido.ColumnCount);
    
                //asignamos algunas propiedades para el diseño del pdf  
                datatable.DefaultCell.Padding = 1;
                float[] headerwidths = GetTamañoColumnas(dataGrid_pedido);
    
                datatable.SetWidths(headerwidths);
                datatable.WidthPercentage = 100;
                datatable.DefaultCell.BorderWidth = 1;
    
                //DEFINIMOS EL COLOR DE LAS CELDAS EN EL PDF 
                datatable.DefaultCell.BackgroundColor = iTextSharp.text.BaseColor.WHITE;
    
                //DEFINIMOS EL COLOR DE LOS BORDES 
                datatable.DefaultCell.BorderColor = iTextSharp.text.BaseColor.BLACK;
    
                //LA FUENTE DE NUESTRO TEXTO 
                iTextSharp.text.Font fuente = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA);
    
                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 < dataGrid_pedido.ColumnCount; i++)
                {
    
                    objP = new Phrase(dataGrid_pedido.Columns[i].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 < dataGrid_pedido.RowCount; i++)
                {
                    for (int j = 0; j < dataGrid_pedido.ColumnCount; j++)
                    {
                        objP = new Phrase(dataGrid_pedido[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)
            {
                //Tomamos el numero de columnas 
                float[] values = new float[dg.ColumnCount];
                for (int i = 0; i < dg.ColumnCount; i++)
                {
                    //Tomamos el ancho de cada columna 
                    values[i] = (float)dg.Columns[i].Width;
                }
                return values;
            }
    
            //exportar a excel
            private void btn_exportar_Click(object sender, EventArgs e)
            {
                try
                {
    
                    SaveFileDialog fichero = new SaveFileDialog();
                    fichero.Filter = "Excel (*.xls)|*.xls";
                    fichero.FileName = "ArchivoExportado";
                    if (fichero.ShowDialog() == DialogResult.OK)
                    {
                        Microsoft.Office.Interop.Excel.Application aplicacion;
                        Microsoft.Office.Interop.Excel.Workbook libros_trabajo;
                        Microsoft.Office.Interop.Excel.Worksheet hoja_trabajo;
    
                        aplicacion = new Microsoft.Office.Interop.Excel.Application();
                        libros_trabajo = aplicacion.Workbooks.Add();
                        hoja_trabajo = (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);
    
                        //Recorremos el DataGridView rellenando la hoja de trabajo
                        for (int i = 0; i < dataGrid_pedido.Rows.Count; i++)
                        {
                            for (int j = 0; j < dataGrid_pedido.Columns.Count; j++)
                            {
                                if ((dataGrid_pedido.Rows[i].Cells[j].Value == null) == false)
                                {
                                    hoja_trabajo.Cells[i + 1, j + 1] = dataGrid_pedido.Rows[i].Cells[j].Value.ToString();
                                }
                            }
                        }
                        libros_trabajo.SaveAs(fichero.FileName,
                            Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                        libros_trabajo.Close(true);
                        aplicacion.Quit();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al exportar la informacion debido a: " + ex.ToString());
                }
            }

    y este es el error que me arroja cuando abro el documento

    imagen: http://imgur.com/a/udbb5

    porque me esta arrojando este error?


    martes, 8 de noviembre de 2016 20:41

Respuestas

Todas las respuestas