ASP.NET Core和Angular的RDLC本地报表查看器(> 2.0)

int*_*t-i 10 reporting-services pdfjs asp.net-core report-viewer2016 angular

有没有办法在asp.net核心网页上显示RDLC Local ReportViewer控件?

要在传统的WebForms应用程序上显示ReportViewer,以下代码可以正常工作.

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

        <div style="height: 600px;">
            <rsweb:ReportViewer ID="reportViewer" runat="server" Width="100%" Height="100%"></rsweb:ReportViewer>
        </div>
    </form>
</body>
Run Code Online (Sandbox Code Playgroud)

我已经尝试并测试了以下组件.结果如下.

  1. ReportViewerForMvc - 适用于MVC,但与ASPNET Core不兼容.
  2. MvcReportViewer - 适用于MVC,但与ASPNET Core不兼容(请参阅此问题:https://github.com/ilich/MvcReportViewer/issues/121).
  3. MvcReportViewer - 不使用微软查看器控件,因此支持aspnet核心,但不适用于本地报告(需要报告服务器URL).
  4. ngx-ssrs-reportviewer npm包 - 远程报告的包装器,不支持本地报告.(需要一个报告服务器URL)

Q1.<rsweb:ReportViewer>在asp.net核心应用程序中使用的最佳方法是什么?

int*_*t-i 9

Microsoft没有实现或将RDLC报告查看器引入aspnet核心。相反,他们购买产品来填补空白。

完整的新闻链接-https: //blogs.msdn.microsoft.com/sqlrsteamblog/2018/04/02/microsoft-acquires-report-rendering-technology-from-forerunner-software/

链接到原始问题-https://github.com/aspnet/Home/issues/1528

这就是本质。“微软从Forerunner Software获得了报告呈现技术

我们很高兴地宣布,我们已经从Forerunner Software获得了技术,以加快对Reporting Services的投资。除其他事项外,该技术包括客户端的Reporting Services(* .rdl)报告呈现,用于查看报告的响应式UI小部件以及用于将报告集成到其他应用程序中的JavaScript SDK,这证明了我们的合作伙伴可以在此基础上实现我们的开放平台。

这对您来说是个好消息,因为我们看到了将这项技术应用于我们收到的多个反馈点的机会:

您正在寻找可以运行SSRS报告的云软件即服务(SaaS)或平台即服务(PaaS)。正如您在我们的Spring '18发行说明中可能已经看到的那样,我们正在积极致力于将SSRS报告引入Power BI云服务中,并且我们正在基于客户端渲染来实现这一目标。您可能想使用Power BI应用程序在手机上查看SSRS报告。我们相信这项技术将帮助我们提供更好,响应更快的UI,以提供报告参数值,在报告中导航,甚至可能查看报告内容。

您喜欢Report Viewer控件……但这是一个ASP.NET Web窗体控件。您需要一些可以集成到ASP.NET Core / MVC应用程序或非ASP.NET应用程序中的东西。希望借助这项技术,您可以提供可集成到任何现代应用程序中的基于客户端/基于JavaScript的报表查看器。

这些都是艰巨的任务,我们尚无可共享的时间表,但请在接下来的几个月中保持关注,因为我们始终努力与您分享我们的进展,并尽早并尽可能多地听到您的反馈。

Forerunner Software将在有限的时间内继续为现有客户提供支持。”


Mua*_*878 7

为了让 Jame 的解决方案起作用 - 它要求您引用完整的 .NET Framework。这是一切都很好了ASP.NET核心1和2,但是-因为每个人都应该知道现在- ASP .NET 3将不是让你引用完整的.NET框架。

目前,只能将 SSRS 托管服务器报告 (RDL) 报告与 .NET Core 一起使用。对于客户端RDLC 报告,目前只有付费的 Syncfusion 解决方案有效(我已经测试了跟踪版本)

James 的解决方案对 ASP.NET Core 3 完全无效(再次 - 只允许您引用 .NET Core - 而不是 .NET Framework)


lie*_*enn 5

如果问题是如何在ASP.NET Core项目上使用Microsoft Reportviewer,则无论实现细节如何,我的解决方案都是绕过实际的reportviewer控件,并将报告直接呈现为PDF或Excel。它适用于.net Core 1.1。我们使用的NuGet包是Fornax提供的Microsoft.ReportViewer.2012.Runtime

using System.IO;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Reporting.WebForms;

namespace WebApplication3.Controllers
{
    public class ReportController : Controller
    {
        private readonly IHostingEnvironment environment = null;
        public ReportController(IHostingEnvironment environment)
        {
            this.environment = environment;
        }
        public IActionResult Report()
        {
            string mimeType;
            string encoding;
            string filenameExtension;
            string[] streams;
            Warning[] warnings;
            var rv = new ReportViewer();
            rv.ProcessingMode = ProcessingMode.Local;
            rv.LocalReport.ReportPath = Path.Combine(environment.ContentRootPath, "Reports", "Report1.rdlc");
            rv.LocalReport.Refresh();
            var bytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streams, out warnings);
            return File(bytes, mimeType);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 该示例在 .net Core 1.1 MVC 应用程序中工作,但我们在具有 .net Core MVC 和 .net 4.6 库的解决方案中实现了它,但没有 System.Web。它仍然可以正常编译和执行,但是为了将基于 C# 类的数据集添加到报告中,我们需要暂时将 RDLC 移动到引用 System.Web 的 .net MVC 项目。 (2认同)