JCi*_*cio 7 c# reporting-services
所以,这是我的想法。
标题说明了一切。我似乎找不到任何有关如何远程执行SSRS报告并将其另存为PDF的指导。
我试图遵循以下文章。 在ASP.NET Core网站中使用Reporting Services(SSRS)作为参考
但是,当我将Service Reference添加到我的项目中时,某些方法似乎具有错误的签名。
例如。rsExec.LoadReportAsync(report,null);
在我的参考资料中,第一个参数是TrustedUserHeader对象。
有没有人有一个很好的起点,说明如何从C#执行SSRS报告?我找不到任何简单的例子。
我通过使用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或类似的东西来管理参数值。