Vamos a crear un reporte en PDF usando la librería iTextShartp, el lenguaje C# .NET y base de datos MySQL.
Este articulo esta basado en previos artículos que puedes encontrar en el sitio: Conectar C# y Mysql y Agregar tabla en PDF con iTextSharp.
Base de datos
La base de datos que usaremos como ejemplo tiene la siguiente estructura.
create database contactos; use contactos; create table contacto( id int not null auto_increment primary key, nombre varchar(255), apellidos varchar(255), domicilio varchar(255), telefono varchar(255), email varchar(255) ); insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("Agustin","Ramos","Mex","9371331142","evilnapsis@gmail.com"); insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("Prueba","Prueba","Prueba domicilio","prue telefono","Prueba email"); insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("1","2","3","4","5"); insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("A","B","C","D","E"); insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("F","G","H","I","J");
Librerías Necesarias
En los artículos de referencia están las instrucciones para instalar las librerías, que básicamente son: Mysql Conector y iTextsharp, es posible agregar las referencias usando NuGet.
Una vez instaladas las debemos incluir en el código:
using MySql.Data.MySqlClient; using iTextSharp.text; using iTextSharp.text.pdf; using System.IO;
Código
El código se los explicare por secciones, al final solo deben escribir todo junto o copiar pegar.
El código lo tengo todo en un solo archivo para facilitar el ejemplo.
Parte 1. Cadena de conexión a la base de datos
Lo primero que definiremos es la cadena de conexión a la base de datos.
MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder(); builder.Server = "localhost"; builder.UserID = "root"; builder.Password = ""; builder.Database = "contactos";
Debemos colocar los datos correctamente.
Parte 2. Abrir la conexión y ejecutar el SQL
Ahora vamos a iniciar la conexión y ejecutar la consulta SQL “select * from contacto”. contacto es el nombre de la tabla de ejemplo.
MySqlConnection con = new MySqlConnection(builder.ToString()); con.Open(); MySqlCommand cmd = con.CreateCommand(); cmd.CommandText = "select * from contacto"; MySqlDataReader reader = cmd.ExecuteReader();
En la variable “reader” el resultado de la consulta, mas a delante vamos a leerlos.
Parte 3. Iniciar el documento PDF
Vamos a crear el PDF con itextsharp, el PDF se guardara con el nombre “reporte.pdf”, también colocaremos el encabezado “REPORTE DE CONTACTO”, se puede cambiar según sus necesidades.
Document doc = new Document(); PdfWriter.GetInstance(doc, new FileStream("reporte.pdf", FileMode.Create)); // asignamos el nombre de archivo hola.pdf doc.Open(); Paragraph title = new Paragraph(); title.Font = FontFactory.GetFont(FontFactory.TIMES, 28f, BaseColor.BLUE); title.Add("PDF con iTextSharp, C# .NET y MySQL"); doc.Add(title); // Agregamos un parrafo vacio como separacion. doc.Add(new Paragraph(" "));
Parte 4. Encabezado de la tabla
Ahora vamos a crear el encabezado de la tabla.
PdfPTable table = new PdfPTable(6); // Esta es la primera fila table.AddCell("Id"); table.AddCell("Nombre"); table.AddCell("Apellidos"); table.AddCell("Domicilio"); table.AddCell("Telefono"); table.AddCell("Email");
Recordar que al crear el PdfTable hay que agregar el numero de columnas, en este caso son 6.
Parte 5. Agregar los datos a la tabla del PDF
Ahora vamos a recorrer el “reader” que contiene los datos de la base de datos y los vamos a agregar en la tabla del PDF.
while (reader.Read()) { // Filas N depende de la base de datos table.AddCell(reader.GetString("id") ); table.AddCell(reader.GetString("nombre")); table.AddCell(reader.GetString("apellidos")); table.AddCell(reader.GetString("domicilio")); table.AddCell(reader.GetString("telefono")); table.AddCell(reader.GetString("email")); } // Agregamos la tabla al documento doc.Add(table);
Al usar la función GetString(param) lleva como parámetro el nombre del campo de la tabla de la base de datos. El orden de los datos debe encajar con la cabecera o primera fila.
Parte 6. Cerrar todo
Por ultimo vamos a cerrar el documento PDF y la conexión a la base de datos.
doc.Close(); con.Close();
Resultado
El resultado es el PDF que se va a guardar en la carpeta donde ejecutamos el script, en mi caso en en GenPdfMysql1\GenPdfMysql1\bin\Debug\reporte.pdf
Descargar
A continuación les dejo 2 opciones de descarga de el código fuente completo, incluye binarios y resultado.
Al usar la opción 1 nos apoyas, debes esperar 5 segundos y después seleccionar “saltar publicidad” y te redirige a la descarga.
Conclusión
Este ejemplo puede ser usado para crear tus propios reportes en PDF usando C# .NET y MySQL.
Espero les ayude este articulo, si tienen dudas pueden escribirla en los comentarios.
Les invito se suscriban a mi canal de youtube https://www.youtube.com/user/evilnapsis
Saludos a todos!