Comment lire un fichier Crystal Reports ?
Pour lire un fichier Crystal Reports dans une application VB.NET, vous devez charger le fichier .rpt
et afficher son contenu dans un contrôle comme le CrystalReportViewer. Voici un guide détaillé pour lire un fichier Crystal Reports.
Prérequis
- Visual Studio : Installez une version compatible avec Crystal Reports.
- Runtime Crystal Reports : Téléchargez et installez le runtime pour Crystal Reports.
- DLL Crystal Reports : Assurez-vous que les bibliothèques suivantes sont référencées dans votre projet :
CrystalDecisions.CrystalReports.Engine
CrystalDecisions.ReportSource
CrystalDecisions.Shared
CrystalDecisions.Windows.Forms
Étape 1 : Ajouter un CrystalReportViewer
Pour lire et afficher un rapport dans une application Windows Forms, ajoutez un contrôle CrystalReportViewer à votre formulaire :
- Ouvrez votre formulaire dans Visual Studio.
- Accédez à la Boîte à outils et recherchez CrystalReportViewer.
- Faites glisser et déposez le contrôle dans votre formulaire.
Étape 2 : Charger et lire un fichier Crystal Reports
Ajoutez le code pour charger et afficher un rapport .rpt
dans le CrystalReportViewer
.
Exemple de Code Complet :
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
' Charger le fichier Crystal Reports
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Si le rapport nécessite une connexion à une base de données
Dim connectionInfo As New ConnectionInfo()
connectionInfo.ServerName = "NomServeur"
connectionInfo.DatabaseName = "NomBaseDeDonnees"
connectionInfo.UserID = "Utilisateur"
connectionInfo.Password = "MotDePasse"
' Appliquer les informations de connexion à toutes les tables du rapport
For Each table As Table In reportDocument.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
' Lier le rapport au CrystalReportViewer
CrystalReportViewer1.ReportSource = reportDocument
' Rafraîchir le rapport pour s'assurer qu'il est mis à jour
CrystalReportViewer1.Refresh()
Catch ex As Exception
MessageBox.Show($"Erreur lors du chargement du rapport : {ex.Message}", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class
Étape 3 : Explications
- Chargement du fichier :
- La méthode
Load
deReportDocument
est utilisée pour charger le fichier.rpt
.
- La méthode
- Connexion à la base de données :
- Si le rapport dépend d’une base de données, configurez les informations de connexion avec
ConnectionInfo
.
- Si le rapport dépend d’une base de données, configurez les informations de connexion avec
- Application des connexions :
- Les informations de connexion doivent être appliquées à toutes les tables du rapport avec la méthode
ApplyLogOnInfo
.
- Les informations de connexion doivent être appliquées à toutes les tables du rapport avec la méthode
- Affichage dans le CrystalReportViewer :
- Assignez l’objet
ReportDocument
à la propriétéReportSource
duCrystalReportViewer
.
- Assignez l’objet
Étape 4 : Ajout de paramètres (si nécessaire)
Si votre rapport utilise des paramètres, vous devez les définir avant d’afficher le rapport.
Exemple :
Dim paramFields As New ParameterFields()
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()
' Ajouter un paramètre au rapport
paramField.Name = "NomDuParametre"
paramValue.Value = "ValeurDuParametre"
paramField.CurrentValues.Add(paramValue)
paramFields.Add(paramField)
CrystalReportViewer1.ParameterFieldInfo = paramFields
Étape 5 : Exporter le rapport (optionnel)
Vous pouvez également lire le rapport et l’exporter au format PDF, Excel ou Word.
Exemple d’exportation en PDF :
Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
MessageBox.Show("Rapport exporté avec succès !")
Étape 6 : Résolution des erreurs courantes
Erreur : “Impossible de trouver les informations de connexion”
- Vérifiez que les informations de connexion sont correctement configurées pour toutes les tables du rapport.
“Chemin introuvable”
- Assurez-vous que le chemin du fichier
.rpt
est correct. UtilisezApplication.StartupPath
pour un chemin relatif.
Erreur : “Impossible de charger le fichier .rpt”
- Vérifiez que le runtime de Crystal Reports est installé sur votre système.
Étape 7 : Exemple avec un chemin dynamique
Pour rendre votre application plus flexible, utilisez un chemin dynamique pour le fichier .rpt
.
Exemple :
Dim reportPath As String = System.IO.Path.Combine(Application.StartupPath, "Rapports\VotreRapport.rpt")
reportDocument.Load(reportPath)
Étape 8 : Lire un fichier Crystal Reports dans une application Web (ASP.NET)
Si vous développez une application Web, utilisez le CrystalReportViewer
dans une page ASP.NET.
Exemple (WebForm) :
Imports CrystalDecisions.CrystalReports.Engine
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim reportDocument As New ReportDocument()
Dim reportPath As String = Server.MapPath("Rapports/VotreRapport.rpt")
reportDocument.Load(reportPath)
CrystalReportViewer1.ReportSource = reportDocument
CrystalReportViewer1.RefreshReport()
End If
End Sub
End Class
Pour exporter un rapport Crystal Reports en PDF dans une application VB.NET, vous pouvez utiliser la méthode ExportToDisk
ou ExportToStream
de l’objet ReportDocument
. Voici un guide détaillé.
Étape 1 : Préparer l’environnement
- Prérequis :
- Assurez-vous que le runtime Crystal Reports est installé.
- Référencez les bibliothèques nécessaires dans votre projet :
CrystalDecisions.CrystalReports.Engine
CrystalDecisions.Shared
- Créer un rapport Crystal Reports (
.rpt
) :- Configurez votre rapport pour qu’il affiche les données souhaitées.
Étape 2 : Exporter un Rapport en PDF
Voici le code de base pour exporter un rapport Crystal Reports en PDF.
Exemple 1 : Exportation de base
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Module ExportCrystalReports
Sub Main()
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
' Chemin du fichier Crystal Reports
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Exporter le rapport en PDF
Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
Console.WriteLine("Rapport exporté avec succès : " & exportPath)
Catch ex As Exception
Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
End Try
End Sub
End Module
Exemple 2 : Exportation avec Connexion à une Base de Données
Si votre rapport utilise une base de données, configurez les informations de connexion avant l’exportation.
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Module ExportCrystalReportsWithDB
Sub Main()
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
' Charger le fichier de rapport
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Configurer les informations de connexion
Dim connectionInfo As New ConnectionInfo()
connectionInfo.ServerName = "NomServeur"
connectionInfo.DatabaseName = "NomBaseDeDonnees"
connectionInfo.UserID = "Utilisateur"
connectionInfo.Password = "MotDePasse"
' Appliquer les informations de connexion à toutes les tables
For Each table As Table In reportDocument.Database.Tables
Dim logonInfo As TableLogOnInfo = table.LogOnInfo
logonInfo.ConnectionInfo = connectionInfo
table.ApplyLogOnInfo(logonInfo)
Next
' Exporter le rapport en PDF
Dim exportPath As String = "C:\Chemin\Vers\RapportExporté.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
Console.WriteLine("Rapport exporté avec succès : " & exportPath)
Catch ex As Exception
Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
End Try
End Sub
End Module
Étape 3 : Exporter vers un Flux (Stream)
Si vous voulez manipuler le fichier PDF avant de le sauvegarder, utilisez un Stream.
Exemple d’exportation vers un flux
Imports System.IO
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Module ExportToStream
Sub Main()
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
' Charger le fichier de rapport
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Exporter le rapport en flux PDF
Dim pdfStream As Stream = reportDocument.ExportToStream(ExportFormatType.PortableDocFormat)
' Enregistrer le flux en tant que fichier PDF
Dim exportPath As String = "C:\Chemin\Vers\RapportStream.pdf"
Using fileStream As New FileStream(exportPath, FileMode.Create, FileAccess.Write)
pdfStream.CopyTo(fileStream)
End Using
Console.WriteLine("Rapport exporté avec succès depuis le flux : " & exportPath)
Catch ex As Exception
Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
End Try
End Sub
End Module
Étape 4 : Ajouter des Paramètres au Rapport
Si votre rapport accepte des paramètres, vous pouvez les définir avant l’exportation.
Exemple avec paramètres
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Module ExportWithParameters
Sub Main()
Try
' Créer une instance du rapport
Dim reportDocument As New ReportDocument()
Dim reportPath As String = "C:\Chemin\Vers\VotreRapport.rpt"
reportDocument.Load(reportPath)
' Ajouter un paramètre
Dim paramFields As New ParameterFields()
Dim paramField As New ParameterField()
Dim paramValue As New ParameterDiscreteValue()
paramField.Name = "NomDuParametre"
paramValue.Value = "ValeurDuParametre"
paramField.CurrentValues.Add(paramValue)
paramFields.Add(paramField)
' Assigner les paramètres au rapport
reportDocument.SetParameterValue("NomDuParametre", "ValeurDuParametre")
' Exporter le rapport en PDF
Dim exportPath As String = "C:\Chemin\Vers\RapportParametre.pdf"
reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, exportPath)
Console.WriteLine("Rapport exporté avec succès avec paramètres : " & exportPath)
Catch ex As Exception
Console.WriteLine("Erreur lors de l'exportation : " & ex.Message)
End Try
End Sub
End Module
Étape 5 : Résolution des erreurs courantes
Erreur : “Impossible de trouver les informations de connexion”
- Vérifiez que les informations de connexion sont correctement appliquées à toutes les tables du rapport.
“Le fichier est introuvable”
- Assurez-vous que le chemin du fichier
.rpt
est correct. UtilisezSystem.IO.Path.Combine
pour des chemins dynamiques.
Erreur : “Le rapport est déjà utilisé”
- Si vous exportez plusieurs rapports dans une même instance, appelez
reportDocument.Close()
etreportDocument.Dispose()
après chaque exportation.
Étape 6 : Exporter dans d’autres formats
Outre le PDF, vous pouvez exporter dans d’autres formats comme Excel ou Word.
Exemple :
' Exportation au format Excel
reportDocument.ExportToDisk(ExportFormatType.Excel, "C:\Chemin\Vers\RapportExcel.xls")
' Exportation au format Word
reportDocument.ExportToDisk(ExportFormatType.WordForWindows, "C:\Chemin\Vers\RapportWord.doc")