Paginar un pdf y alinear las columnas de un datagridview

Iniciado por joalbela, 16 Marzo 2011, 22:38 PM

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

joalbela

Hola amigos necesito una yuda urgente, estoy generando un datagridview y l oestoy exportando a pdf me gustaria poder alinear las columnas como quiero y poder colocarle el numero de la hoja a cada una si algo aca dejo el codigo . mucahs gracias.



Código (csharp) [Seleccionar]
OdbcDataAdapter dta  =new OdbcDataAdapter (" SELECT a.cdgo_prdcto COD,a.nmbre_prdcto DESCRIPCION, SUM(b.cntdad)PMVTA,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 ", conn);



            DataSet dsdatos = new DataSet();
            dta.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 dataGridView1_DefaultCellStyleChanged(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.LETTER, 10, 10, 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 = 4; // Define el grosor del encabezado

            //datatable.DefaultCell.VerticalAlignment = Element.ALIGN_CENTER; // Alinea el encabezado al centro
            //datatable.DefaultCell.Column =
            datatable.DefaultCell.Padding = 3;     //Amplia el tamaño del encabezado
                   
   

           iTextSharp.text.Font fuente = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.COURIER, 9);

           Phrase objP = new Phrase("A", fuente);
                       
            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {

                objP = new Phrase(dataGridView1.Columns[i].HeaderText, fuente);
               
                //this.dataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter;
                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);
                    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

.::IT::.

joalbela pues la manera mas facil de hacer lo que dices es usando un reporteador como http://www.fyireporting.com/  que soporta exportacion a pdf lo e probado en estas semanas y la verdad esta muy bueno.
Simplemente .::IT::.

Novlucker

Lo bueno sería que dejes de abrir un nuevo tema por cada opción de estilo que le quieres poner a tus pdf :¬¬

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein