从C#执行SSRS报告另存为PDF

JCi*_*cio 7 c# reporting-services

所以,这是我的想法。

标题说明了一切。我似乎找不到任何有关如何远程执行SSRS报告并将其另存为PDF的指导。

我试图遵循以下文章。 在ASP.NET Core网站中使用Reporting Services(SSRS)作为参考

但是,当我将Service Reference添加到我的项目中时,某些方法似乎具有错误的签名。

例如。rsExec.LoadReportAsync(report,null);

在我的参考资料中,第一个参数是TrustedUserHeader对象。

有没有人有一个很好的起点,说明如何从C#执行SSRS报告?我找不到任何简单的例子。

Mic*_*ael 8

我通过使用Microsoft.Reporting.Webforms和以下方法来执行此操作:

 using Microsoft.Reporting.WebForms;
 ...
 public byte[] ExportToExcel(string reportName, string[] paramNames, string[][] paramDic)
    {
        // Variables
        Warning[] warnings;
        string[] streamIds;
        string mimeType;
        string encoding;
        string extension;



        ReportViewer rv = new ReportViewer { ProcessingMode = ProcessingMode.Remote };
        rv.AsyncRendering = false;
        ServerReport sr = rv.ServerReport;
        sr.ReportServerUrl = new Uri("http://<server>/reportserver");
        sr.ReportPath = "/<report path>/" + reportName;

        if (paramNames.Length != 0)
        {
            List<ReportParameter> paramList = paramNames.Select((t, i) => new ReportParameter(t, paramDic[i])).ToList();
            rv.ServerReport.SetParameters(paramList);
        }

        return rv.ServerReport.Render("Excel", null, out mimeType, out encoding, out extension,
            out streamIds, out warnings);
    }
Run Code Online (Sandbox Code Playgroud)

byte然后可以通过将该阵列发送到客户端,Response或将其保存到文件中,以便以后通过电子邮件发送/传输。

第一个参数是报表的名称,第二个参数是参数名称的数组,第三个参数是包含参数值的数组的数组。我在职业生涯的早期就编写了这种方法,现在我不会再这样写了。如果使用此方法,我将重构代码以采用两个参数:reportName和一个名为parameters的Dictionary或类似的东西来管理参数值。