Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: joalbela en 8 Marzo 2011, 21:46 pm



Título: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: joalbela en 8 Marzo 2011, 21:46 pm
Hola amigos, tengo un problema lo que pasa es que genere un datagrid y luego lo exporte a pdf y me gustaria poder cambiarle el estilo de la  letra por una curier new ya que no he podido hacerlo.

Muchas gracias


Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: Shell Root en 8 Marzo 2011, 21:50 pm
Y como hicisteis para exportarlo? Alguna librería u objeto?


Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: joalbela en 8 Marzo 2011, 22:25 pm
Código
  1. private void btnExportar_Click(object sender, EventArgs e)
  2.        {
  3.  
  4.  
  5.            DateTime hora = DateTime.Now;
  6.            string fcha_ttal = Convert.ToDateTime(hora).Day + "/" + Convert.ToDateTime(hora).Month + "/" + Convert.ToDateTime(hora).Year;
  7.            Document doc = new Document(PageSize.A3, 9, 9, 10, 10);
  8.            string filename = "C:\\Temp\\Listado Total.pdf";
  9.            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 ;
  10.            Chunk tamaño = new Chunk(" LISTA DE PRODUCTOS CODIFICADOS EN " + fcha_ttal + "", FontFactory.GetFont("COURIER", 12));
  11.  
  12.            try
  13.            {
  14.                FileStream file = new FileStream
  15.               (filename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
  16.                PdfWriter.GetInstance(doc, file);
  17.                doc.Open();
  18.                doc.Add(new Paragraph(tamaño));
  19.                doc.Add(jpg);
  20.                GenerarDocumento(doc);
  21.                Process.Start(filename);
  22.            }
  23.            catch (Exception ex)
  24.            {
  25.                MessageBox.Show(ex.Message);
  26.            }
  27.            doc.Close();
  28.        }
  29.        //Función que genera el documento Pdf
  30.        public void GenerarDocumento(Document document)
  31.        {
  32.            PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount);
  33.            datatable.DefaultCell.Padding = 1;
  34.            float[] headerwidths = GetTamañoColumnas(dataGridView1);
  35.            datatable.SetWidths(headerwidths);
  36.            datatable.WidthPercentage = 100;
  37.            datatable.DefaultCell.BorderWidth = 3;
  38.            datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
  39.            for (int i = 0; i < dataGridView1.ColumnCount; i++)
  40.            {
  41.                datatable.AddCell(dataGridView1.Columns[i].HeaderText);
  42.  
  43.            }
  44.            datatable.HeaderRows = 0;
  45.            datatable.DefaultCell.BorderWidth = 1;
  46.  
  47.            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
  48.            {
  49.                for (int j = 0; j < dataGridView1.ColumnCount; j++)
  50.                {
  51.                    datatable.AddCell(dataGridView1[j, i].Value.ToString());
  52.                    //string nmbre_prdcto = datatable.AddCell(dataGridView1[j, i].Value.ToString());
  53.                    //string primera = nmbre_prdcto.Substring(1, 1);
  54.                }
  55.                datatable.CompleteRow();
  56.            }
  57.            document.Add(datatable);
  58.        }
  59.        public float[] GetTamañoColumnas(DataGridView dg)
  60.        {
  61.            float[] values = new float[dg.ColumnCount];
  62.            for (int i = 0; i < dg.ColumnCount; i++)
  63.            {
  64.                values[i] = (float)dg.Columns[i].Width;
  65.            }
  66.            return values;
  67.        }


ESTE FUE EL CODIGO CON EL QUE EXPORTE EL DATAGRID AL PDF


Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: seba123neo en 8 Marzo 2011, 22:48 pm
trata de poner el codigo fuente entre el geshi asi es mas claro de leer.

no pusiste que libreria estas usando, porque cuando haces un "new Document" o "new PdfPTable" esos metodos forman parte de una libreria externa al visual studio que debes estar usando.

por lo que me acabo de fijar la libreria se llama iTextSharp

busca en internet que hay mucho de esta libreria, fijate esto:

iTextSharp - Working with Fonts (http://www.mikesdotnetting.com/Article/81/iTextSharp-Working-with-Fonts)

saludos.





Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: joalbela en 8 Marzo 2011, 23:02 pm
 
Código
  1. public void GenerarDocumento(Document document)
  2.        {
  3.            PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount);
  4.            datatable.DefaultCell.Padding = 1;
  5.            float[] headerwidths = GetTamañoColumnas(dataGridView1);
  6.            datatable.SetWidths(headerwidths);
  7.            datatable.WidthPercentage = 100;
  8.            datatable.DefaultCell.BorderWidth = 3;
  9.            datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
  10.            for (int i = 0; i < dataGridView1.ColumnCount; i++)
  11.            {
  12.                datatable.AddCell(dataGridView1.Columns[i].HeaderText);
  13.  
  14.            }
  15.            datatable.HeaderRows = 0;
  16.            datatable.DefaultCell.BorderWidth = 1;
  17.  
  18.            for (int i = 0; i < dataGridView1.RowCount - 1; i++)
  19.            {
  20.                for (int j = 0; j < dataGridView1.ColumnCount; j++)
  21.                {
  22.                    datatable.AddCell(dataGridView1[j, i].Value.ToString());
  23.                    //string nmbre_prdcto = datatable.AddCell(dataGridView1[j, i].Value.ToString());
  24.                    //string primera = nmbre_prdcto.Substring(1, 1);
  25.                }
  26.                datatable.CompleteRow();
  27.            }
  28.            document.Add(datatable);
  29.        }
  30.        public float[] GetTamañoColumnas(DataGridView dg)
  31.        {
  32.            float[] values = new float[dg.ColumnCount];
  33.            for (int i = 0; i < dg.ColumnCount; i++)
  34.            {
  35.                values[i] = (float)dg.Columns[i].Width;
  36.            }
  37.            return values;
  38.        }

claro uso ITextSharp


Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: seba123neo en 8 Marzo 2011, 23:04 pm
no hacia falta que hagas otro post, podes editar el otro.

el geshi para C# es [ code=csharp] [ /code]


Título: Re: Ayuda con tipo de letra al exportar un datagrid a pdf
Publicado por: [D4N93R] en 9 Marzo 2011, 20:53 pm
Bloqueo el tema porque ya tienes este que habla sobre el mismo tema.

https://foro.elhacker.net/net/insertar_en_una_nueva_hoja_de_al_pasar_de_una_letra_a_a_b_y_asi_sucesivamente_c-t321232.0.html;msg1588848#new

Un saludo