[Java] Utilisation de JasperReport / iReport
salut à tous !
je viens de downloadé Jasperreport 1.0.1 et iReport 0.5.1 pour pouvoir créer des etats de sortie . Sur le site il n'y a pas de doc concernant l'integration de jasper et de iReport à Jbuilder . Quelqu'un peut il m'aider ?
merci de me repondre !
utilisation ireport jasperreports
Pour commencer, il faut comprendre le principe de fonctionnement.
-Jaspertreports est une bibliothèque java qui permet de compiler un fichier xml (d'extension jrxml) qui représente le descriptif d'un état en un fichier (.jasper) . le moteur jasperreports pourra exécuté ce fichier (.jasper) et créera un flux représentant la classe JasperPrint qui contiendra les données provenant de la source de données (jdbc , xml ,ejb etc...) et les paramètres à transmettre à l'état . Ce flux pourra être afficher en aperçu dans un JPanel, ou transformer en différents formats de fichier :
- .jrprint (format sérialisé de la classe jasperprint)
- .pdf (pouvant être lu par acrobat reader ou autre lecteur pdf)
- .csv (format texte)
- .html (page html , lecture avec un navigateur web)
- .xml (langage de balise)
- .xls (lecture par excel ou openoffice calc (avec transformation en une
seule feuille ou une feuille par page )
- le flux pourra aussi être intégré dans J2EE (servlets, jsp)
Nous voyons que jasperreports nous offre de puissantes possibilités de reporting, cependant la difficulté réside dans l'édition du fichier xml de description de l'état avec ces nombreuses balises. C'est là que iReport intervient car il est un outil "What You See Is What You Get" c'est à dire un éditeur visuel d'état au même titre que Crystal Report. Lorsque on dessine la maquette de l'état sous iReport , on sauvegarde le travail dans un fichier wml (.jrxml). iReport permet de compiler ce fichier en fichier(.jasper). Il ne reste plus qu'à utiliser ce fichier .jasper dans notre application java comme-ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
import java.sql.Connection;
import java.sql.SQLException;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JRViewer;
...
...
...
/* recupérer le fichier jasper généré par iReport (il doit se trouver dans
le classpath) */
InputStream ficListeVilles = getClass().getResourceAsStream("/res/ListeVilles.jasper");
/* remplir l'état avec la connection, les paramètres et les données */
JasperPrint fluxJasperPrint = JasperManager.fillReport(ficListeVilles, mesParametres, maConnection);
/* voir l'aperçu */
JasperViewer.viewReport(fluxJasperPrint);
/*la fenêtre d'aperçu JasperViewer est une application autonome qui utilise un dérivé de JPanel qui est JRViewer. Par défaut lorsque vous cliquer sur X(quitter), la fenêtre aperçu et votre application se ferment à cause de l'instruction exit(0) se trouvant dans JasperViewer. Pour éviter cela, mieux vaut créer soit même sa propre fenêtre d'aperçu qui utilise le JPanel JRViewier.
JRViewer jPanelApercu = new JRViewer(fluxJasperPrint); */
/* exemple de génération en fichier pdf */
JasperManager.printReportToPdfFile(fluxJasperPrint, "/res/ListeVilles.pdf"); |
Re: explication mesParametres!
J'étais en compo,c'est pour cela que j'étais absent du forum.
"mesParamètres" représente une collection composée du nom du paramètre défini dans votre état et de sa valeur.
Exemple: si dans mon état qui liste des clients j'avais défini un critère sur le quartier. Je veux lister tous les clients habitant à cocody.Dans mon état, j'aurais comme source de données:
Code:
1 2
| select * from clients
where quartier = $P{parametreQuartier} |
avec $P{parametreQuartier} indiquant au moteur jasperreport que c'est une requête paramétrée avec un paramètre nommé "parametreQuartier".
Au moment d'exécuter l'état j'aurai,
Code:
1 2 3
| HashMap mesParametres = new HashMap();
mesParametres.put("parametreQuartier", new String("cocody"));
JasperPrint jasperPrint = JasperManager.fillReport(ficListeClients, mesParametres, maConnection); |
mais dans le cas où votre état n'a pas de paramètres,il faut laisser le vide à la place du paramètre "mesParametres".
exemple: liste de tous les clients
comme source de mon état j'aurai:
Au moment d'exécuter l'état on aura:
Code:
1 2
|
JasperPrint jasperPrint = JasperManager.fillReport(ficListeClients, , maConnection); |