-
Notifications
You must be signed in to change notification settings - Fork 0
Ejecutar
Una vez que se ha creado el archivo del reporte, incluyendo la consulta SQL se puede ya trabajar en crear el reporte.
Antes de poder ejecutar el reporte debemos usar una instancia de ReportManager
que se encargará de ejecutar la consulta y luego darle los datos a quién se encargará de hacer la presentación.
ReportManager
requiere de una conexión a una base de datos, lo bueno de ello es que cualquier conexión que implemente [IDbConnection](IDbConnection como MySQL o SQL Server, nos sirve para comenzar.
using (var db = new DataContext())
{
// Crear la instancia de quién se encargará de realizar la consulta.
// Le pasamos la conexión activa, para que ejecute la consulta.
var gestorReportes = new ReportManager(db.Database.Connection);
// El SQL tiene filtros que sólo se ejecutarán si existen estas variables.
var variablesReporte = new Dictionary<string, object>();
// Agregamos la variable del maestro
gestorReportes.Add("maestroId", 58);
// Abrimos el reporte. "configuracionReporte" es el reporte del ejemplo de arriba.
gestorReportes.Open("~/Reportes/alumnos.json", variablesReporte);
...
}
En el ejemplo anterior se usa una clase que deriva de DbContext
(EntityFramework), pero se puede ajustar a su proyecto.
Como puede observar los pasos son.
- Crear la instancia
- Crear un diccionario con los argumentos
- Agregar un argumento al reporte llamado
maestroId
y asignarle un valor 58.
- Agregar un argumento al reporte llamado
- Abrir el reporte.
Nota: La ruta al reporte debe existir, use Server.MapPath
o env.ContentRootPath
si trabaja en Web o Directory.GetCurrentDirectory
para obtener la ruta al reporte.
Una vez que gestorReportes
ya tiene la información y las variables, ahora si puede ejecutar el reporte de la siguiente manera:
// Creamos una instancia al generador.
// Puede ser HtmlGenerator, CsvGenerator, JsonGenerator, ExcelGenerator
var generador = new PdfGenerator();
El generador del reporte puede cambiar por ejemplo a HtmlGenerator
, CsvGenerator
, JsonGenerator
, ExcelGenerator
o PdfGenerator
. Instale el paquete de acuerdo a sus necesidades.
// Recuperamos el reporte.
var reportDocument = gestorReportes.GetAllBytes(generador);
De esa manera recuperamos el contenido del reporte, ahora nos resta decidir si lo guardamos a un archivo o lo damos para descargar.
public IActionResult Descargar()
{
...
// Recuperamos el reporte.
var reportDocument = gestorReportes.GetAllBytes(generador);
return this.File(reportDocument, generator.MimeType, $"reporte{generator.FileExtension}");
}
public void Guardar()
{
...
// Recuperamos el reporte.
var reportDocument = gestorReportes.GetAllBytes(generador);
File.WriteAllBytes("reporte.pdf", reportDocument);
}
Carlos Jesús Huchim Ahumada info@huchim.com
https://huchim.com
.NET en español PROGRAMADORES