2010-12-14 75 views
2

Actuellement, SQL Reporting Services 2005 est configuré, avec le gestionnaire de rapports sur une URL sur laquelle les utilisateurs peuvent accéder aux rapports. Les rapports fonctionnent très bien là-bas.Exportation d'un rapport SSRS paramétré à partir du code C#

Mon problème est de tenter de générer ces rapports en C# .net 4.0 code sans aucune intervention de l'utilisateur (comme en utilisant le visualiseur de rapports sur l'écran). Je voudrais générer et exporter un rapport à un fichier PDF dans une application C# .net. Les rapports ont des paramètres obligatoires, donc je devrais transmettre les paramètres au rapport. Comment puis-je faire ceci?

J'ai cherché en ligne, et soit je n'utilise pas les bons mots-clés, soit il n'y a pas beaucoup d'information à ce sujet. Je suis très étonné de voir à quel point il a été difficile de trouver des renseignements à ce sujet, car je m'attendrais à ce que cette question soit assez courante. Tout conseil/aide est apprécié.

Répondre

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

Je n'ai pas beaucoup utilisé la version 2005 du ReportViewer. Mais vous devriez être en mesure de faire quelque chose comme ceci:

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); 

Les plats à emporter générale étant que ServerReport et LocalReport ont tous deux été conçus pour être utilisables en dehors d'un ReportViewer.

+0

En fait, j'ai l'air de me tromper car 'ServerReport' manque d'un constructeur public alors que' LocalReport' le fait (j'ai beaucoup utilisé LocalReport). Vous devriez toujours être en mesure d'instancier un ReportViewer puis simplement utiliser son objet ServerReport à partir de là. –

+0

Ce que vous avez soumis était proche et un bon début, mais il manquait comment écrire les informations d'identification et comment écrire le fichier en PDF. Merci pour l'aide. – Ryan

0

J'ai eu un problème similaire lorsque je voulais ouvrir le rapport en format PDF. Si vous avez juste besoin d'ouvrir un pdf avec des paramètres dans une fenêtre de navigateur, vous pouvez utiliser le serveur de rapports lui-même et spécifier Format = PDF comme une option de chaîne de requête.

Exemple:

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

J'espère que cela sauve quelqu'un d'autre là-bas un peu de temps!