3

目前,我设置了 SQL Reporting Services 2005,报表管理器位于用户可以访问报表的 URL 上。报告在那里工作得很好。

我的问题是尝试在没有任何用户交互的情况下以 C# .net 4.0 代码生成这些报告(例如使用屏幕上的报告查看器)。我想在 C# .net 应用程序中生成报告并将其导出为 PDF 文件。报告具有必需的参数,因此我需要将参数传递给报告。我怎样才能做到这一点?

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

4

3 回答 3

2

我很少使用 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);

一般的要点是,ServerReport两者LocalReport都被设计为可在 ReportViewer 之外使用。

于 2010-12-14T17:45:18.180 回答
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();
}
于 2010-12-16T14:04:36.663 回答
0

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

例子:

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

我希望这可以节省其他人的时间!

于 2015-07-17T06:05:17.317 回答