Asp.net mvc ASP.NET MVC中的Crystal报表

Asp.net mvc ASP.NET MVC中的Crystal报表,asp.net-mvc,crystal-reports,Asp.net Mvc,Crystal Reports,我知道在ASP.NET MVC中使用服务器端控件是不允许的,但是我们有一长串crystal reports,公司已经为以前的应用程序生成了这些报告,我想将它们用于我们的新ASP.NET MVC应用程序 在ASP.NET MVC中使用crystal reports是否有合适的方法?如果是这样,怎么办?我们在工作中也遇到过类似的情况 我们使用的解决方案是: 为报告创建单独的目录 为报表创建普通的ASPX页面 我们没有发现这个设置有任何问题(除了正常的水晶问题)。我们在工作中遇到过类似的情况 我们

我知道在ASP.NET MVC中使用服务器端控件是不允许的,但是我们有一长串crystal reports,公司已经为以前的应用程序生成了这些报告,我想将它们用于我们的新ASP.NET MVC应用程序


在ASP.NET MVC中使用crystal reports是否有合适的方法?如果是这样,怎么办?

我们在工作中也遇到过类似的情况

我们使用的解决方案是:

  • 为报告创建单独的目录
  • 为报表创建普通的ASPX页面

我们没有发现这个设置有任何问题(除了正常的水晶问题)。

我们在工作中遇到过类似的情况

我们使用的解决方案是:

  • 为报告创建单独的目录
  • 为报表创建普通的ASPX页面

我们没有发现这个设置有任何问题(除了正常的水晶问题)。

实际上它非常简单。只需向MVC项目添加以下引用:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • 水晶决定。共享
使用如下操作方法:

  • C#:

  • 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
    

其实很简单。只需向MVC项目添加以下引用:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • 水晶决定。共享
使用如下操作方法:

  • C#:

  • 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
    

只需添加以下参考:使用CrystalDecisions.CrystalReports.Engine
然后执行此操作:

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");


            }
使用CrystalDecisions.CrystalReports.Engine;
公共行动结果报告()
{
列表=新列表();
ReportDocument rd=新的ReportDocument();
rd.Load(Path.Combine(Server.MapPath(“~/Repport/CrystalReport1.rpt”));
Response.Buffer=false;
Response.ClearContent();
Response.ClearHeaders();
Stream=rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0,SeekOrigin.Begin);
返回文件(流,“application/pdf”、“Suivie Historique.pdf”);
}

只需添加以下参考:使用CrystalDecisions.CrystalReports.Engine
然后执行此操作:

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");


            }
使用CrystalDecisions.CrystalReports.Engine;
公共行动结果报告()
{
列表=新列表();
ReportDocument rd=新的ReportDocument();
rd.Load(Path.Combine(Server.MapPath(“~/Repport/CrystalReport1.rpt”));
Response.Buffer=false;
Response.ClearContent();
Response.ClearHeaders();
Stream=rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0,SeekOrigin.Begin);
返回文件(流,“application/pdf”、“Suivie Historique.pdf”);
}

如何将目录从路由中排除?实际上,我刚刚检查过。无需修改路由。如果您在asp.net MVC中添加了Crystal报表,那么您是否遇到刷新Crystal报表的问题?您是否遇到过“viewstate MAC验证失败错误”?您必须以某种方式使用这种方法来处理授权问题。@Vikas您正在使用“CrystalReportSource”吗?如果是这样,请使用ReportDocument并保存您的报告文档,也许会更好。如何从路由中排除目录?实际上,我刚刚检查过。无需修改路由。如果您在asp.net MVC中添加了Crystal报表,那么您是否遇到刷新Crystal报表的问题?您是否遇到过“viewstate MAC验证失败错误”?您必须以某种方式使用这种方法来处理授权问题。@Vikas您正在使用“CrystalReportSource”吗?如果是这样,请使用ReportDocument并保存您的报告文档,您可能需要的进一步信息可能会更好-非常优雅(Crystal reports和优雅在同一对话中-提示世界末日)。(我做到了!)终于开始实施这项计划。真是太容易了,谢谢!考虑从rdlcIt移回crystal效果很好,但在添加多个表(impersonate=true.Nice-非常优雅(crystal reports和优雅在同一对话中-提示世界末日)时获得了“数据库登录失败”,以获取您可能需要的进一步信息。(我做到了!)终于开始实施这项计划。真是太容易了,谢谢!考虑从rdlcIt移回crystal效果很好,但在添加多个impersonate=true的表时出现“数据库登录失败”。从审阅队列:我可以请求您在源代码周围添加一些上下文吗。只有代码的答案很难理解。如果你能在你的文章中添加更多的信息,这将对提问者和未来的读者都有帮助。只有代码的答案很难理解。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。