Crystal Reports в ASP.NET MVC - PullRequest
       29

Crystal Reports в ASP.NET MVC

35 голосов
/ 08 декабря 2008

Я знаю, что использование серверных элементов управления в ASP.NET MVC запрещено новое приложение ASP.NET MVC.

Существует ли подходящий способ использования отчетов Crystal в ASP.NET MVC? Если да, то как?

Ответы [ 3 ]

73 голосов
/ 01 мая 2010

Это довольно просто на самом деле. просто добавьте следующие ссылки на ваш проект MVC:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared

используйте метод действия, как показано ниже:

  • 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
    
15 голосов
/ 08 декабря 2008

У нас была / есть похожая ситуация на работе.

Решение, которое мы используем:

  • Создать отдельный каталог для отчетов
  • Создание обычных страниц ASPX для отчетов

Мы не видели никаких проблем (кроме обычных Crystal) с этой настройкой.

1 голос
/ 24 мая 2017

Просто добавьте эту ссылку: используя 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");


            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...