Como crear y descargar un archivo PDF con datos de SQL Server desde ASP.NET C#

En este video vamos aprender cómo crear y descargar un archivo PDF que obtiene información desde una Base de Datos en SQL Server mediante un Procedimiento Almacenado, utilizando la dll iTextSharp descargada del Nuget Package instalada en nuestro Proyecto de ASP.NET C#


Conocimientos Previos:




Secciones importantes de código

Default.aspx


   <asp:Button ID="btnGenerarPDF" Text="Descargar PDF" runat="server" OnClick="btnGenerarPDF_Click" />


Default.cs

Librerias importantes:


using iTextSharp.text;

using iTextSharp.text.pdf;



Métodos:


  protected void btnGenerarPDF_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            Document document = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, HttpContext.Current.Response.OutputStream);
            dt = dtAlumno();
            if (dt.Rows.Count>0)
            {
                document.Open();
                Font fontTitle = FontFactory.GetFont(FontFactory.COURIER_BOLD, 25);
                Font font9 = FontFactory.GetFont(FontFactory.TIMES, 9);


                PdfPTable table = new PdfPTable(dt.Columns.Count);
                document.Add(new Paragraph(20, "Reporte de Alumnos 2020", fontTitle));
                document.Add(new Chunk("\n"));

                float[] widths = new float[dt.Columns.Count];
                for (int i = 0; i < dt.Columns.Count; i++)
                    widths[i] = 4f;

                table.SetWidths(widths);
                table.WidthPercentage = 90;

                PdfPCell cell = new PdfPCell(new Phrase("columns"));
                cell.Colspan = dt.Columns.Count;

                foreach (DataColumn c in dt.Columns)
                {
                    table.AddCell(new Phrase(c.ColumnName, font9));
                }

                foreach (DataRow r in dt.Rows)
                {
                    if (dt.Rows.Count > 0)
                    {
                        for (int h = 0; h < dt.Columns.Count; h++)
                        {
                            table.AddCell(new Phrase(r[h].ToString(), font9));
                        }
                    }
                }
                document.Add(table);
            }
            document.Close();

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;filename=AlumnosActuales2020" + ".pdf");
            HttpContext.Current.Response.Write(document);
            Response.Flush();
            Response.End();
        }

Recuperación de Datos desde SQL Server mediante un Procedimiento Almacenado:


public DataTable dtAlumno()
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connDB"].ConnectionString))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "SPSalumnos";
                cmd.Connection = conn;
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                da.Dispose();
               
            }
            return dt;
        }








2 comentarios:

  1. Buenas tu codigo funciona correctamnte pero al cargar la pagina en iis no me funciona me tira el siguiente error

    No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión 127.0.0.1:2273

    desde visual anda perfecto solo me queda solucionar esto desde mi servidor, gracias

    ResponderEliminar
  2. Hola pero donde hay informacion para crear el pdf con una encabezado, con una imagen de fondo etc

    ResponderEliminar

ASP.NET Web API

Es un entorno que nos permite desarrollar servicios HTTP para múltiples clientes tales como exploradores y dispositivos móviles,  las operac...