studio - Crystal Reports en ASP.NET MVC
reportes con entity framework (3)
Es bastante simple en realidad. solo agregue las siguientes referencias a su proyecto MVC:
- CrystalDecisions.CrystalReports.Engine
- CrystalDecisions.ReportSource
- CrystalDecisions.Shared
usa el método de Acción como a continuación:
C #:
using CrystalDecisions.CrystalReports.Engine; public ActionResult Report() { ReportClass rptH = new ReportClass(); rptH.FileName = Server.MapPath("[reportName].rpt"); rptH.Load(); rptH.SetDataSource([datatable]); Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); return File(stream, "application/pdf"); }
VB.NET:
Imports CrystalDecisions.CrystalReports.Engine Public Function Report() As ActionResult Dim rptH As New ReportClass() rptH.FileName = Server.MapPath("[reportName].rpt") rptH.Load() rptH.SetDataSource([datatable]) Dim stream As IO.Stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat) Return File(stream, "application/pdf") End Function
Sé que el uso de controles del lado del servidor es un no-no en ASP.NET MVC, sin embargo, tenemos una larga lista de informes de cristal que la compañía ya ha producido para una aplicación anterior que me gustaría utilizar para nuestra nueva ASP. Aplicación NET MVC.
¿Existe una forma adecuada de usar informes de cristal en ASP.NET MVC? ¿Si es así, cómo?
Tuvimos / tenemos una situación similar en el trabajo.
La solución que usamos:
- Crear un directorio separado para informes
- Crea páginas ASPX normales para informes
No hemos visto ningún problema (además de los normales Crystal) con esta configuración.
Solo agregue esta referencia: usando CrystalDecisions.CrystalReports.Engine;
que hacer esta acción:
using CrystalDecisions.CrystalReports.Engine;
public ActionResult Report()
{
List<Table> table = new List<Table>();
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Repport/CrystalReport1.rpt")));
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "Suivie Historique.pdf");
}