2010-12-14 9 views
2

からパラメータ化されたSSRSレポートをエクスポート現在、SQL Reporting Services 2005がセットアップされており、ユーザーがレポートにアクセスできるURLにレポートマネージャが設定されています。報告書はそこでうまくいっています。C#コード

私の問題は、C#.net 4.0コードでこれらのレポートを生成しようとしています。ユーザーの操作はありません。(画面上でレポートビューアを使用するなど)。 C#.netアプリケーションでレポートを生成してPDFファイルにエクスポートしたいと思います。レポートにはパラメータが必要なので、レポートにパラメータを渡す必要があります。これどうやってするの?

私はオンラインで検索していますが、間違ったキーワードを使用しているか、これに関する情報があまりありません。私はそれがかなり一般的な質問であると予想するので、これに関する情報を見つけることがいかに難しいかには非常に驚いています。任意のすべてのアドバイス/助けに感謝します。

答えて

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

私は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は、両方のレポートビューアーの使用可能な外になるように設計されたということで、一般的なお持ち帰り。

+0

実際には、 'LocalReport'は(私はもっと多くのLocalReportを使ってきましたが)' ServerReport'にはpublicコンストラクタがありません。 ReportViewerをインスタンス化してからそこからServerReportオブジェクトを使用するだけで済みます。 –

+0

あなたが提出したのは、すばらしい始まりでしたが、資格情報を書き込む方法と実際にファイルをPDFに書き込む方法がありませんでした。助けてくれてありがとう。 – Ryan

0

私はPDFとしてレポートを開いたかったのと同じ問題がありました。ブラウザウィンドウでパラメータを指定してpdfを開くだけであれば、レポートサーバー自体を使用して、Format = PDFをクエリ文字列オプションとして指定できます。

例:

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

私は、これはそこに他の誰かいくつかの時間を節約できます願っています!