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

时间:2017-07-12 17:46:45

标签: c# reporting-services

所以,这是我的删除。

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

我试过按照下面的文章。 Using Reporting Services (SSRS) as a reference in an ASP.NET Core site

但是,当我将服务引用添加到我的项目时,某些方法似乎有错误的签名。

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

在我的引用中,第一个参数是TrustedUserHeader对象。

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

1 个答案:

答案 0 :(得分:5)

我是通过使用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);
    }

然后byte数组可以通过Response发送到客户端,或保存到文件中以便稍后通过电子邮件发送/传输。

第一个参数是报告的名称,第二个参数是参数名称数组,第三个参数是包含参数值的数组。我在职业生涯的早期就写过这种方法,现在我不会这样写。如果你使用这个,我会重构代码以获取两个参数:reportName和一个名为参数的字典或类似的东西来管理参数值。