none
iTextSharp banco de dados RRS feed

  • Pergunta

  • Boa tarde,

    Preciso gerar um relatório básico em outra aba com iTextSharp, pegando as informações do banco. Mas não apresenta os dados na tabela. Obs. (Nesse momento é inviável usar o Crystal Reports).

    Eis meu código:

      ClasseDAO objDAO = new ClasseDAO();
    
            protected void Page_Load(object sender, EventArgs e)
            {
                Converter2();
            }
    
    
    
          
    //Método
            private void Converter()
            {
                //Força o download (tem desativar o bloqueio do popup)
                //string arquivoPdf = "attachment; filename=ExportacaoAspx2Pdf.pdf";
    
                //Abrir a página (não força o download)
                string arquivoPdf = "filename=ExportacaoAspx2Pdf.pdf";
    
                Response.ClearContent();
                Response.AddHeader("content-disposition", arquivoPdf);
                Response.ContentType = "application/pdf";
    
    
                Document document = new Document();
                PdfWriter.GetInstance(document, Response.OutputStream);
    
                document.Open();
    
                //Aqui é onde deve estar escrito na folha do pdf
    
    
                PdfPTable table = new PdfPTable(2);
                //actual width of table in points
                table.TotalWidth = 216f;
                //fix the absolute width of the table
                table.LockedWidth = true;
    
                //relative col widths in proportions - 1/3 and 2/3
                float[] widths = new float[] { 1f, 2f };
                table.SetWidths(widths);
                table.HorizontalAlignment = 0;
                //leave a gap before and after the table
                table.SpacingBefore = 20f;
                table.SpacingAfter = 30f;
    
                PdfPCell cell = new PdfPCell(new Phrase("nome"));
                cell.Colspan = 2;
                cell.Border = 0;
                cell.HorizontalAlignment = 1;
                table.AddCell(cell);
    
    
                IList<Classe> objClasses = objDAO.Listar();
    
                foreach (var p in objClasses)
                {
                    table.AddCell(Convert.ToString(p));
    
    
                }
    
               
    
                document.Add(table);
    
                document.Close();
    
                Response.Write(document);
                Response.End();
    
    
    
    
    
    
    
            }
    
    
    
    //Propriedades
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace ItextSharp_Tabelas
    {
        public class Classe
        {
    
            public string Nome { get; set; }
            public string Idade { get; set; }
    
    
        }
    }
    
    //
    
    using iTextSharp.text.pdf;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.OleDb;
    using System.Linq;
    using System.Web;
    
    namespace ItextSharp_Tabelas
    {
        public class ClasseDAO
        {
            Conecta c = new Conecta();
    
           
            //Listar Dados no DataGridView
            public IList<Classe> Listar()
            {
    
                IList<Classe> lista = new List<Classe>();
                string query = "SELECT nome, idade FROM teste";
    
    
                c.conectar();
    
    
              
    
                OleDbCommand cd = new OleDbCommand();
                cd.Connection = c.cn;
                cd.CommandText = query;
                OleDbDataReader dr = cd.ExecuteReader();
    
                try
                {
    
    
                    while (dr.Read())
                    {
    
                       
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classe obj = new Classe();
    
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
    
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (c.cn.State == ConnectionState.Open)
                        c.desconectar();
                }
    
                return lista;
            }//fim
    
    
    
    
        }
    }
    
    
    
    
    
    

    O grande problema é esse:

    Quem puder ajudar, agradeço muito

    segunda-feira, 21 de agosto de 2017 18:31

Respostas

  • Gelson ,

    Vamos lá, você precisa montar um relatório com cabeçalho, corpo e rodapé com as suas informações.

    Fiz um esboço mais já vai te ajudar muito eh só ajustar o layout, está meio corrido aqui no trampo!

    Susbstitua

                    while (dr.Read())
                    {
    
                       
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classe obj = new Classe();
    
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
    
                    }

    Por

    //MemoryStream stream = new MemoryStream();
    
                    Document document = new Document(PageSize.A4, 36, 36, 72, 36);
    
                    //PdfWriter.GetInstance(document, stream);
                    PdfWriter.GetInstance(document, Response.OutputStream);
    
                    //PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("C:\\teste.pdf", FileMode.Create));
    
                    iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("~/Styles/logo.png"));
                    
                    logo.ScalePercent(47f);
    
    
                    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(logo);
                    iTextSharp.text.Chunk chk = new iTextSharp.text.Chunk(img, 0, 0);
                    iTextSharp.text.Phrase phrs = new iTextSharp.text.Phrase(chk);
                    iTextSharp.text.HeaderFooter hdr = new iTextSharp.text.HeaderFooter(phrs, false);
    
                    document.Header = hdr;
                    hdr.Border = iTextSharp.text.Rectangle.NO_BORDER;
    
                    HeaderFooter rodape = new HeaderFooter(new Phrase("Um texto para o Rodapé!", FontFactory.GetFont("Arial", 8)), true);
    
                    document.Footer = rodape;
                    rodape.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    document.Open();
    
                    iTextSharp.text.Table tableLinha = new iTextSharp.text.Table(2, 1);
                    tableLinha.Width = document.RightMargin - document.LeftMargin;
                    tableLinha.Width = 100;
    
                    tableLinha.BorderWidth = 0;
                    tableLinha.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    tableLinha.Padding = 1;
                    tableLinha.Width = 100;
    
                    // set *column* widths
                    float[] widthsLinha = { .4f, .3f, };
                    tableLinha.Widths = widthsLinha;
    
                    string[] colLinha = { "COL 1", "COL 2" };
    
                    tableLinha.EndHeaders();
    
                    Cell cell = new Cell(new Paragraph("Criar linha em branco em duas Tabela para separar", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.WHITE)));
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    tableLinha.AddCell(cell);
    
                    iTextSharp.text.Table tableCabecalho = new iTextSharp.text.Table(2, 1);
                    tableCabecalho.Width = document.RightMargin - document.LeftMargin;
                    tableCabecalho.Width = 100;
    
                    tableCabecalho.BorderWidth = 0;
                    tableCabecalho.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    tableCabecalho.Padding = 1;
                    tableCabecalho.Width = 100;
                    //Cell cell = new Cell(logo);
                    //cell1.HorizontalAlignment = Element.ALIGN_CENTER;
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    //cell1.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);
                    tableCabecalho.AddCell(cell);
    
    
                    iTextSharp.text.Table table1 = new iTextSharp.text.Table(2, 1);
                    table1.Width = document.RightMargin - document.LeftMargin;
                    table1.Width = 100;
    
                    table1.BorderWidth = 1;
                    table1.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    table1.Padding = 1;
                    table1.Width = 100;
    
                    // set *column* widths
                    float[] widths1 = { 50, 50 };
                    table1.Widths = widths1;
    
                    string[] col1 = { "COL 1", "COL 2" };
    
                    table1.EndHeaders();
    
                    cell = new Cell(new Paragraph("1 - Teste", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.BLACK)));
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    table1.AddCell(cell);
    while (dr.Read())
                    {
    
                       
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classe obj = new Classe();
    
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
     //table1.AddCell(cell);
                        cell = new Cell(new Paragraph("" + strNome + "", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.BLACK)));
                        cell.Leading = 10;
                        cell.Colspan = 2;
                        
                        table1.AddCell(cell);
                        cell = new Cell(new Paragraph(""+strIdade+"", FontFactory.GetFont("Arial", 8)));
                        cell.Leading = 10;
                        cell.Colspan = 2;
                        table1.AddCell(cell);
    
    
                    }
    document.NewPage();
                    document.Add(tableCabecalho);
                    document.Add(tableLinha);
                    document.Add(table1);
    
                    document.Close();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment;filename=TestePDF.pdf");
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.Write(document);
                    Response.End();

    Espero ter ajudado agora!


    sexta-feira, 25 de agosto de 2017 19:59

Todas as Respostas

  • Boa tarde, gelson_ventura. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Essa seria uma questão de "Break Fix/Erro" ou "How to/Customização"?

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 22 de agosto de 2017 17:43
    Moderador
  • Boa tarde Gelson,

    Segue um post que eu já tinha respondido https://social.msdn.microsoft.com/Forums/pt-BR/1b5e8e5e-4112-46b1-bede-4a4545965806/exportar-grid-para-pdf?forum=aspnetpt

    Se for útil marque como resposta!

    quarta-feira, 23 de agosto de 2017 20:12
  • Obrigado Marcio, mas sua resposta não foi útil. Não estou usando Gridview e no link não pega de uma base de dados
    quinta-feira, 24 de agosto de 2017 18:50
  • Boa tarde,

    Break Fix/Erro

    quinta-feira, 24 de agosto de 2017 18:50
  • Boa tarde, gelson_ventura.

    Está aparecendo alguma mensagem de erro?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 25 de agosto de 2017 19:36
    Moderador
  • Gelson ,

    Vamos lá, você precisa montar um relatório com cabeçalho, corpo e rodapé com as suas informações.

    Fiz um esboço mais já vai te ajudar muito eh só ajustar o layout, está meio corrido aqui no trampo!

    Susbstitua

                    while (dr.Read())
                    {
    
                       
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classe obj = new Classe();
    
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
    
                    }

    Por

    //MemoryStream stream = new MemoryStream();
    
                    Document document = new Document(PageSize.A4, 36, 36, 72, 36);
    
                    //PdfWriter.GetInstance(document, stream);
                    PdfWriter.GetInstance(document, Response.OutputStream);
    
                    //PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("C:\\teste.pdf", FileMode.Create));
    
                    iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("~/Styles/logo.png"));
                    
                    logo.ScalePercent(47f);
    
    
                    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(logo);
                    iTextSharp.text.Chunk chk = new iTextSharp.text.Chunk(img, 0, 0);
                    iTextSharp.text.Phrase phrs = new iTextSharp.text.Phrase(chk);
                    iTextSharp.text.HeaderFooter hdr = new iTextSharp.text.HeaderFooter(phrs, false);
    
                    document.Header = hdr;
                    hdr.Border = iTextSharp.text.Rectangle.NO_BORDER;
    
                    HeaderFooter rodape = new HeaderFooter(new Phrase("Um texto para o Rodapé!", FontFactory.GetFont("Arial", 8)), true);
    
                    document.Footer = rodape;
                    rodape.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    document.Open();
    
                    iTextSharp.text.Table tableLinha = new iTextSharp.text.Table(2, 1);
                    tableLinha.Width = document.RightMargin - document.LeftMargin;
                    tableLinha.Width = 100;
    
                    tableLinha.BorderWidth = 0;
                    tableLinha.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    tableLinha.Padding = 1;
                    tableLinha.Width = 100;
    
                    // set *column* widths
                    float[] widthsLinha = { .4f, .3f, };
                    tableLinha.Widths = widthsLinha;
    
                    string[] colLinha = { "COL 1", "COL 2" };
    
                    tableLinha.EndHeaders();
    
                    Cell cell = new Cell(new Paragraph("Criar linha em branco em duas Tabela para separar", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.WHITE)));
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    tableLinha.AddCell(cell);
    
                    iTextSharp.text.Table tableCabecalho = new iTextSharp.text.Table(2, 1);
                    tableCabecalho.Width = document.RightMargin - document.LeftMargin;
                    tableCabecalho.Width = 100;
    
                    tableCabecalho.BorderWidth = 0;
                    tableCabecalho.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    tableCabecalho.Padding = 1;
                    tableCabecalho.Width = 100;
                    //Cell cell = new Cell(logo);
                    //cell1.HorizontalAlignment = Element.ALIGN_CENTER;
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    //cell1.BackgroundColor = new Color(0xC0, 0xC0, 0xC0);
                    tableCabecalho.AddCell(cell);
    
    
                    iTextSharp.text.Table table1 = new iTextSharp.text.Table(2, 1);
                    table1.Width = document.RightMargin - document.LeftMargin;
                    table1.Width = 100;
    
                    table1.BorderWidth = 1;
                    table1.BorderColor = new iTextSharp.text.Color(0, 0, 0);
                    table1.Padding = 1;
                    table1.Width = 100;
    
                    // set *column* widths
                    float[] widths1 = { 50, 50 };
                    table1.Widths = widths1;
    
                    string[] col1 = { "COL 1", "COL 2" };
    
                    table1.EndHeaders();
    
                    cell = new Cell(new Paragraph("1 - Teste", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.BLACK)));
                    cell.Leading = 10;
                    cell.Colspan = 2;
                    table1.AddCell(cell);
    while (dr.Read())
                    {
    
                       
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classe obj = new Classe();
    
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
     //table1.AddCell(cell);
                        cell = new Cell(new Paragraph("" + strNome + "", FontFactory.GetFont("Arial", 8, iTextSharp.text.Font.HELVETICA, iTextSharp.text.Color.BLACK)));
                        cell.Leading = 10;
                        cell.Colspan = 2;
                        
                        table1.AddCell(cell);
                        cell = new Cell(new Paragraph(""+strIdade+"", FontFactory.GetFont("Arial", 8)));
                        cell.Leading = 10;
                        cell.Colspan = 2;
                        table1.AddCell(cell);
    
    
                    }
    document.NewPage();
                    document.Add(tableCabecalho);
                    document.Add(tableLinha);
                    document.Add(table1);
    
                    document.Close();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment;filename=TestePDF.pdf");
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    Response.Write(document);
                    Response.End();

    Espero ter ajudado agora!


    sexta-feira, 25 de agosto de 2017 19:59
  • Bom dia,

    Por falta de retorno essa thread está encerrada.

    Se preciso, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 28 de agosto de 2017 13:04
    Moderador