从C#代码导出参数化SSRS报告

时间:2010-12-14 17:15:18

标签: c# reporting-services export parameterized

目前我已经设置了SQL Reporting Services 2005,报表管理器位于用户可以访问报表的URL上。这些报告在那里很有效。

我的问题是尝试使用C#.net 4.0代码生成这些报告而无需任何用户交互(例如在屏幕上使用报告查看器)。我想生成一个报告到C#.net应用程序中的PDF文件。报告需要参数,因此我需要将参数传递给报告。我怎么能这样做?

我一直在网上搜索,要么我使用了错误的关键字,要么就此没有太多信息。我很惊讶于找到这方面的信息是多么困难,因为我认为这是一个相当普遍的问题。任何和所有建议/帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

string outputPath = "C:\Temp\PdfReport.pdf";

ReportViewer reportViewer = new ReportViewer();
reportViewer.ServerReport serverReport = new ServerReport();
reportViewer.ServerReport.ReportPath = @"path/to/report";
reportViewer.ServerReport.ReportServerUrl = new Uri(@"http://...");
reportViewer.ProcessingMode = ProcessingMode.Local;

reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = new 
    System.Net.NetworkCredential(username, password, domain)

List<ReportParameter> parameters = new List<ReportParameter>();
parameters.Add(new ReportParameter("parameterName", "value"));

string mimeType;
string encoding;
string extension;
string[] streams;
Warning[] warnings;
byte[] pdfBytes= serverReport.Render("PDF", string.Empty, out mimeType, 
    out encoding, out extension, out streams, out warnings);

// save the file
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
    fs.Write(pdfBytes, 0, pdfBytes.Length);
    fs.Close();
}

答案 1 :(得分:1)

我没有太多使用2005版的ReportViewer。但你应该能够做到这样的事情:

ServerReport serverReport = new ServerReport();
serverReport.ReportPath = "path/to/report";
serverReport.ReportServerCredentials = ...;
serverReport.ReportServerUrl = "http://....";
serverReport.SetParameters(...);
string mimeType;
string encoding;
string extension;
string[] streams;
Warning[] warnings;
byte[] asPdf = serverReport.Render("PDF", string.Empty, out mimeType, out encoding, out extension, out streams, out warnings);

一般情况是ServerReportLocalReport都设计为可在ReportViewer之外使用。

答案 2 :(得分:0)

我有一个类似的问题,我想以PDF格式打开报告。如果您只需要在浏览器窗口中打开带参数的pdf,那么您可以使用报表服务器本身并指定 Format = PDF 作为查询字符串选项。

示例:

  

http://myServer/ReportServer/Pages/ReportViewer.aspx?%2fMyApplicationReports%2fAcutalReportFileName&rs:Command=Render&rs:Format=PDF&ParamOneId=31943&ParamTwoDate=17072015

我希望这能节省其他人一些时间!