Экспорт параметризованного отчета SSRS из кода C # - PullRequest
2 голосов
/ 14 декабря 2010

В настоящее время у меня настроен SQL Reporting Services 2005 с диспетчером отчетов по URL-адресу, по которому пользователи могут получать доступ к отчетам. Отчеты там отлично работают.

Моя проблема пытается создать эти отчеты в коде C # .net 4.0 без какого-либо взаимодействия с пользователем (например, с помощью средства просмотра отчетов на экране). Я хотел бы создать и экспортировать отчет в PDF-файл в приложении C # .net. Отчеты имеют обязательные параметры, поэтому мне нужно передать параметры в отчет. Как я могу это сделать?

Я искал в Интернете, либо я использую неправильные ключевые слова, либо информации по этому вопросу немного. Я весьма удивлен тем, как трудно было найти информацию по этому вопросу, так как я ожидал, что это будет довольно распространенный вопрос. Любой совет и помощь приветствуются.

Ответы [ 3 ]

2 голосов
/ 16 декабря 2010
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 голос
/ 14 декабря 2010

Я не очень сильно использовал версию ReportViewer 2005 года.Но вы должны быть в состоянии сделать что-то вроде этого:

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.

0 голосов
/ 17 июля 2015

У меня была похожая проблема, когда я хотел открыть отчет в формате PDF.Если вам просто нужно открыть PDF-файл с параметрами в окне браузера, вы можете использовать сам сервер отчетов и указать Формат = PDF в качестве параметра строки запроса.

Пример:

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

Надеюсь, это спасет кого-то еще!

...