private static FileResult GenerarReportePdfFileResult( string nombreReporte, string titulo, IEnumerable datos, Dictionary <string, string> parametrosAdicionales = null) { var reportViewer = new ReportViewer(); reportViewer.LocalReport.ReportPath = ObtenerPathReporte(nombreReporte); reportViewer.LocalReport.EnableExternalImages = true; reportViewer.LocalReport.DataSources.Add(new ReportDataSource("Datos", datos)); var parametros = new List <ReportParameter> { new ReportParameter("Titulo", titulo), new ReportParameter("ColorPrincipal", Configuracion.Configuracion.ColorPrincipal), new ReportParameter("LogoURL", Configuracion.Configuracion.LogoURL), new ReportParameter("MutualNombre", Configuracion.Configuracion.MutualNombre), new ReportParameter("MutualDireccion", Configuracion.Configuracion.MutualDireccion.Replace(@"\n", Environment.NewLine)) }; if (parametrosAdicionales != null) { foreach (var parametro in parametrosAdicionales) { parametros.Add(new ReportParameter(parametro.Key, parametro.Value)); } } reportViewer.LocalReport.SetParameters(parametros); var resultado = new FileContentResult(reportViewer.LocalReport.Render("PDF"), "application/pdf"); resultado.FileDownloadName = String.Format("{0}-{1:ddMMyyyyHHmm}.pdf", Formato.FormatoSlug(titulo), DateTime.Now); return(resultado); }
public static FileResult GenerarReporteExcelFileResult <TModelo>( IEnumerable <TModelo> items, string titulo, string[] encabezados, Func <TModelo, object[]> mapeoItemValores, Dictionary <string, object> valoresAdicionales = null) { if (items == null) { throw new ArgumentNullException("items"); } if (String.IsNullOrWhiteSpace(titulo)) { throw new ArgumentNullException("nombre"); } if (encabezados == null || !encabezados.Any()) { throw new ArgumentNullException("titulos"); } if (mapeoItemValores == null) { throw new ArgumentNullException("mapeoItemValores"); } using (var pkg = new ExcelPackage()) { var hoja = pkg.Workbook.Worksheets.Add(titulo); int tituloCol = 1; foreach (var encabezado in encabezados) { hoja.Cells[1, tituloCol].Value = encabezado; tituloCol++; } var titulosEstilos = hoja.Cells[1, 1, 1, encabezados.Length].Style; titulosEstilos.Font.Bold = true; titulosEstilos.Fill.PatternType = ExcelFillStyle.Solid; titulosEstilos.Fill.BackgroundColor.SetColor(Color.LightGray); int fila = 2, columna = 1; object[] valores = null; foreach (var item in items) { valores = mapeoItemValores(item); columna = 1; foreach (var valor in valores) { hoja.Cells[fila, columna].Value = valor; columna++; } fila++; } if (valoresAdicionales != null) { foreach (var valor in valoresAdicionales) { hoja.Cells[fila, 1].Value = valor.Key + ":"; hoja.Cells[fila, 1].Style.Font.Bold = true; hoja.Cells[fila, 2].Value = valor.Value; fila++; } } hoja.Cells[1, 1, fila, encabezados.Length].AutoFitColumns(); var resultado = new FileContentResult(pkg.GetAsByteArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); resultado.FileDownloadName = String.Format("{0}-{1:ddMMyyyyHHmm}.xlsx", Formato.FormatoSlug(titulo), DateTime.Now); return(resultado); } }