2010-06-30 6 views
0

J'ai une visionneuse de rapport en place, et je voudrais que le rapport en question soit ouvert dans un PDF après que l'utilisateur entre les paramètres et clique sur le bouton soumettre (à la place du rapport en cours d'ouverture dans la fenêtre de la visionneuse de rapports)Crystal Report Viewer - Exporter vers/ouvrir un PDF après avoir entré les paramètres

J'ai fait quelques lectures ailleurs et trouvé cet extrait

rptSP.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Report"); 

et j'ai aussi trouvé un affichage où les éléments suivants a été recommandé.

Ecrivez le code pour exporter le rapport au format PDF dans l'événement CrystalReportViewer_BeforeRenderObject.

mais je ne l'ai pas fait beaucoup passé. Quelqu'un peut-il fournir un exemple de code, ou un lien vers celui qui montre cette solution en place?

Répondre

1

Vous pouvez chercher les paramètres du rapport sur l'événement de clic de bouton Soumettre et récupérer les données du rapport en fonction de ces paramètres, et après cela, vous pouvez l'exporter.

Voici un exemple de code pour cela.

ReportDocument rptDoc = new ReportDocument(); 
rptDoc.Load(Server.MapPath("ETR0040.rpt")); 


// Fetch report parameters to retrieve report data. 
... 

// Retrieve report data. 
DataSet dsResult = DBGateway.ExecuteCommand('command'); 
rptDoc.SetDataSource(dsResult); 

// Report parameters - to be passed if there are any parameters which should be passed to report. 
rptDoc.SetParameterValue("CustomerCode", customerCode); 

DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions(); 
string targetFileName = Request.PhysicalApplicationPath + "Reports\\TempReports\\" + (new Random()).Next() + ".pdf"; 

rptDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; 
rptDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; 

diskOpts.DiskFileName = targetFileName; 
rptDoc.ExportOptions.DestinationOptions = diskOpts; 

// Export report ... Server-Side. 
rptDoc.Export(); 

FileInfo file = new FileInfo(targetFileName); 

Response.ClearContent(); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "application/pdf"; 
Response.TransmitFile(file.FullName); 
+0

n'avez pas reçu votre réponse. Lorsque nous avons enregistré le fichier pdf. Il devrait demander le mot de passe pour l'ouvrir ... Comment y parvenir. – Niks

0

J'ai parcouru un ancien article de codeproject que j'ai soumis en 2006 - qui exporte en pdf à partir d'un projet Crystal Reports. Je ne sais pas si les bibliothèques sont pertinentes - et pire encore, c'est en VB. Espérons que cela fonctionne, ou au moins des points dans la bonne direction.

Imports CrystalDecisions.CrystalReports.Engine 
Imports CrystalDecisions.Shared 
' 
' <snip> 
Dim ExportToFile As New CsReports.Reports 
ExportFile = ExportPath + Session.SessionID.ToString + ".pdf" 
ExportToFile.ReportToPDF(crReportDocument, ExportFile) 
Try 
    ' Export the report 
    crReportDocument.Export() 
    Response.ClearContent() 
    Response.ClearHeaders() 
    Response.ContentType = "application/pdf" 
    Response.WriteFile(ExportFile) 
    Response.Flush() 
    Response.Close() 
    System.IO.File.Delete(ExportFile) 
Catch err As Exception 
    Throw err 'MessBox("Error: Export Failed.!" + err.Message.ToString) 
End Try 'Adobe Acrobat Export*************************** 

Ensuite, il y a la méthode ReportToPDF:

Imports CrystalDecisions.CrystalReports.Engine 
Imports CrystalDecisions.Shared 
Imports System 
Imports System.Data 
Imports System.Web.UI.Page 
Imports System.IO 

Namespace CsReports 
Public Class Reports 
    Inherits System.Web.UI.Page 

    Dim crExportOptions As ExportOptions 
    Dim crDiskFileDestinationOptions As DiskFileDestinationOptions 

    Public Sub ReportToPDF(ByVal crReportName As ReportDocument, ByVal ExportFile As String) 
     ' Create a new instance of the diskfiledestinationoptions class and 
     ' set variable called crExportOptions to the exportoptions class of the reportdocument. 
     crDiskFileDestinationOptions = New DiskFileDestinationOptions() 
     crExportOptions = crReportName.ExportOptions 

     'Set this file as the filename property for the DestinationOptions class 
     crDiskFileDestinationOptions.DiskFileName = ExportFile 

     'set the required report ExportOptions properties 
     With crExportOptions 
      .DestinationOptions = crDiskFileDestinationOptions 
      .ExportDestinationType = ExportDestinationType.DiskFile 
      .ExportFormatType = ExportFormatType.PortableDocFormat 
     End With 
    End Sub 
End Class 
End Namespace 
1
DataTable _table = RetObj.EgpReceipt_PrintFC(DummId); 

rptDoc.Load(Server.MapPath("EgpReceiptPrintFC.rpt")); 
rptDoc.SetDataSource(_table); 

rptDoc.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, false, "Redeemed");