目前我已经设置了SQL Reporting Services 2005,报表管理器位于用户可以访问报表的URL上。这些报告在那里很有效。
我的问题是尝试使用C#.net 4.0代码生成这些报告而无需任何用户交互(例如在屏幕上使用报告查看器)。我想生成一个报告到C#.net应用程序中的PDF文件。报告需要参数,因此我需要将参数传递给报告。我怎么能这样做?
我一直在网上搜索,要么我使用了错误的关键字,要么就此没有太多信息。我很惊讶于找到这方面的信息是多么困难,因为我认为这是一个相当普遍的问题。任何和所有建议/帮助表示赞赏。
答案 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);
一般情况是ServerReport
和LocalReport
都设计为可在ReportViewer之外使用。
答案 2 :(得分:0)
我有一个类似的问题,我想以PDF格式打开报告。如果您只需要在浏览器窗口中打开带参数的pdf,那么您可以使用报表服务器本身并指定 Format = PDF 作为查询字符串选项。
示例:
我希望这能节省其他人一些时间!