Come generare un PDF da una definizione di report incorporata senza server o interfaccia utente?
-
02-07-2019 - |
Domanda
È possibile che un eseguibile autonomo generi un report e lo produca in formato PDF (o una delle altre opzioni di esportazione disponibili dal visualizzatore di report) senza visualizzare il controllo ReportViewer?
La definizione del report deve essere incorporata nell'eseguibile e non deve utilizzare il servizio Web di Reporting Services.
Soluzione
In realtà non hai bisogno di un ReportViewer, puoi istanziare direttamente e utilizzare un LocalReport:
LocalReport report = new LocalReport();
report.ReportPath = "templatepath";
// or use file from resource with report.ReportEmbeddedResource
// add parameters, datasource, etc.
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string filenameExtension;
byte[] bytes;
bytes =report.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
// save byte[] to file with FileStream or something else
Altri suggerimenti
Non è necessario mostrare il controllo stesso.
ReportViewer rv = new ReportViewer();
rv.LocalReport.ReportPath = "templatepath";
// or use file from resource with rv.LocalReport.ReportEmbeddedResource
// add parameters, datasource, etc.
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string filenameExtension;
byte[] bytes;
bytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
// save byte[] to file with FileStream or something else
Tuttavia può eseguire il rendering solo di PDF e XLS (poiché il controllo ReportViewer non può esportare in Word e altri come può fare il servizio Reportig).
Ho dimenticato di menzionare che il codice sopra è C #, usando .NET framework e il controllo ReportViewer. Dai un'occhiata a GotReportViewer per una guida rapida.
Puoi passare un rapporto .rdlc direttamente in pdf con parametri? Ho due elenchi a discesa con cui estraggo il mio rapporto. Non riesco a far funzionare i parametri durante l'esportazione automatica in pdf. Ecco l'errore che visualizzo: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: uno o più parametri richiesti per eseguire il rapporto non sono stati specificati.
Le liste a discesa funzionano quando uso il reportviewer, ma voglio saltare questo passaggio. Posso anche ottenere i miei dati per andare direttamente a un pdf se non ha parametri. Le mie liste a discesa si chiamano ddlyear e ddlmonth.