Exportar un Datagridview a PDF con un encabezado personalizado

Iniciado por joalbela, 11 Marzo 2011, 02:49 AM

0 Miembros y 1 Visitante están viendo este tema.

joalbela

Hola amigos tengo este codigo que genera un reporte en un datagridview y luego lo exporta a PDF, me gustaria que el encabezado donde dice los nombres de las columnas tuviera una letra en negrilla y que esta fila fuera un poco mas gruesa y con un color de fondo pero no se como hacerle les agredeceria mucho su ayuda.




Código (csharp) [Seleccionar]

            IfxDataAdapter dt = new IfxDataAdapter(" SELECT a.cdgo_prdcto as CODIGO,a.nmbre_prdcto DESCRIPCION, SUM(b.cntdad)PMDIOVTA ,a.csto_rpscion CR, " +
                                                   " a.clfccion_prmnnte P, a.clfccion_tmpral T,a.cdgo_brra EAN" +
                                                   " from prdcto a , prmdio_vnta b " +
                                                   " where estdo = 'A' " +
                                                   " and a.cdgo_prdcto = b.cdgo_prdcto " +
                                                   " group by 1,2,4,5,6,7 " +                                                                                                                           
                                                    " order by 2 ", conexion);
            DataGridTableStyle ts1 = new DataGridTableStyle();


           
             DataSet dsdatos = new DataSet();
             dt.Fill(dsdatos, "Datos");                         
           
            this.dataGridView1.DataMember = "Datos";
            //this.dataGridView1.Columns(1).Width = 4400;
            this.dataGridView1.DataSource = dsdatos;
           
           
         
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnExportar_Click(object sender, EventArgs e)
        {


            DateTime hora = DateTime.Now;
            string fcha_ttal = Convert.ToDateTime(hora).Day + "/" + Convert.ToDateTime(hora).Month + "/" + Convert.ToDateTime(hora).Year;


            Document doc = new Document(PageSize.A4, 9, 9, 10, 10);
            string filename = "C:\\Temp\\Listado Total.pdf";
            iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(@"C:\Mis documentos\Biblia_productos\Biblia_productos\Images\marion.JPG"); jpg.Alignment = iTextSharp.text.Image.ALIGN_LEFT;
            Chunk encab = new Chunk(" LISTA DE PRODUCTOS CODIFICADOS EN " + fcha_ttal + "", FontFactory.GetFont("COURIER", 12));
         

            try
            {
                FileStream file = new FileStream
               (filename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
                PdfWriter.GetInstance(doc, file);
                doc.Open();
               

                doc.Add(new Paragraph(encab));
                doc.Add(jpg);
                GenerarDocumento(doc);

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

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

        }

        //Función que genera el documento Pdf
        public void GenerarDocumento(Document document)
        {
            PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount);
            datatable.DefaultCell.Padding = 1;
            float[] headerwidths = GetTamañoColumnas(dataGridView1);

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

            iTextSharp.text.Font fuente = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.COURIER);
           
            DataGridViewCellStyle style = this.dataGridView1.ColumnHeadersDefaultCellStyle;

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

            datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
               
                objP = new Phrase(dataGridView1.Columns[i].HeaderText, fuente);
                 datatable.HorizontalAlignment = Element.ALIGN_CENTER;

                datatable.AddCell(objP);


            }
            datatable.HeaderRows =1;
         
            datatable.DefaultCell.BorderWidth = 1;
           
           
           
           
            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount; j++)
                {
                    objP = new Phrase(dataGridView1[j, i].Value.ToString(), fuente);
                   
                    style.BackColor = Color.WhiteSmoke;
                    style.ForeColor = Color.Gray;

                    datatable.AddCell(objP);
                   


                }
                datatable.CompleteRow();
            }
            document.Add(datatable);
        }
        public float[] GetTamañoColumnas(DataGridView dg)
        {
            float[] values = new float[dg.ColumnCount];
            for (int i = 0; i < dg.ColumnCount; i++)
            {
                values[i] = (float)dg.Columns[i].Width;
            }
            return values;
        }
Jorge MB