加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 07:13:33 所属栏目:asp.Net 来源:网络整理
导读:有没有办法在asp.net核心网页上显示RDLC Local ReportViewer控件? 要在传统的WebForms应用程序上显示ReportViewer,以下代码可以正常工作. body form id="form1" runat="server" asp:ScriptManager ID="ScriptManager1" runat="server" /asp:ScriptManager d
有没有办法在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>

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

> ReportViewerForMvc – 适用于MVC,但与ASPNET Core不兼容.
> MvcReportViewer – 适用于MVC,但与ASPNET Core不兼容(请参阅本期:https://github.com/ilich/MvcReportViewer/issues/121).
> MvcReportViewer – 不使用microsoft viewer控件,因此支持aspnet核心,但不适用于本地报告(需要报告服务器URL).
> ngx-ssrs-reportviewer npm package – 远程报告的包装器,不支持本地报告.(需要报告服务器URL)

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

解决方法

如果问题是如何在aspnet核心项目上使用Microsoft Reportviewer,无论实现细节如何,我的解决方案是绕过实际的reportviewer控件并直接将报表呈现给PDF或Excel.
它适用于.net Core 1.1.我们使用的Nuget包是Fornax的Microsoft Report Viewer 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);
    }
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读