Vous êtes sur la page 1sur 73

JasperReports & iReport

Guide dutilisation

Version 0.1 du 15/09/2008 Etat : Rdaction

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

SUIVI DES MODIFICATIONS


Version 0.1 Rdaction JP.Wilsch Cration Description Vrification Date 15/09/08

Document valid dans sa version xxx

LISTE DE DIFFUSION
Organisation Nom Info Commentaire Validation

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 2/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

SOMMAIRE
1
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

PRESENTATION DE JASPERREPORTS..................................................................................... 4
Quest ce que JasperReports ? ........................................................................................................... 4 Structure de page flexible .................................................................................................................. 4 Plusieurs facons de prsenter les donnes .......................................................................................... 5 Plusieurs faons de fournir les donnes .............................................................................................. 6 Sous rapports.................................................................................................................................... 6 Export .............................................................................................................................................. 6 Dpendances .................................................................................................................................... 7 Utilisation typique.............................................................................................................................. 7 Fonctionnalits avances ................................................................................................................... 8

2
2.1

PRESENTATION DE IREPORT ............................................................................................... 9


Quest ce que iReport ?...................................................................................................................... 9

3
3.1 3.2 3.3

CREATION DUN PREMIER RAPPORT.................................................................................... 11


Cration du modle de rapport JRXML ...............................................................................................11 Prvisualisation dun modle de rapport.............................................................................................15 Compilation via ANT .........................................................................................................................16

CREATION DUN RAPPORT DYNAMIQUE ............................................................................... 17

4.1 Rapport associ une base de donnes ............................................................................................17 4.1.1 Configuration de la connexion ....................................................................................................18 4.1.2 Inscription de la requte ............................................................................................................19 4.1.3 Mise en page du modle ............................................................................................................21 4.1.4 Paramtrage de la requte .........................................................................................................25 4.2 Rapport associ une source de donnes..........................................................................................28 4.2.1 Rapport associ des objets Java ..............................................................................................29 4.2.2 Rapport associ un fichier XML ................................................................................................34

5
5.1 5.2 5.3 5.4 5.5 5.6 5.7

PARAMETRAGE ET MISE EN PAGE DUN RAPPORT FONCTIONNALITES AVANCEES ....................... 39


Colonnes..........................................................................................................................................39 Groupe de donnes ..........................................................................................................................41 Variables..........................................................................................................................................44 Sous rapport ....................................................................................................................................49 Graphiques ......................................................................................................................................57 Scriptlets .........................................................................................................................................62 Virtualisation ....................................................................................................................................66

EXPORTATION DUN RAPPORT ........................................................................................... 68

DOCUMENTS DE REFERENCE
Version Titre

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 3/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

1 PRESENTATION DE JASPERREPORTS

1.1 QUEST CE QUE JASPERREPORTS ?


JasperReports est une librairie Java open source ddie lajout de capacits de reporting aux applications Java, Web ou stand alone. Dmarr en 2001 par Teodor Danciu, le projet est aujourdhui port par la socit JasperSoft. JasperReports permet la reprsentation de donnes sous forme textuelle, mais aussi la gnration de graphiques divers (sous forme de camembert, barre, courbe, nuage de point). Les fonctionnalits principales de JasperReports sont : Une structure de page flexible Possibilit de prsenter les donnes de manire varie (textuel, graphique) Possibilit de fournir les donnes sous diffrentes formes (paramtres, sources de donnes) Gestion de sous rapports Export dans une grande varit de formats

1.2 STRUCTURE DE PAGE FLEXIBLE


JasperReports permet de sparer les donnes du rapport en diffrentes sections : Le titre, qui apparat une fois, au dbut du rapport Lentte de page, qui apparat au dbut de chaque page Le dtail, qui contient habituellement les principales donnes du rapport Le pied de page, qui apparat la fin de chaque page Le rsum, qui apparat une fois, la fin du rapport

JasperReports permet le contrle dynamique de cette structure en fonction du contenu du rapport, en laissant la possibilit par exemple dafficher ou non des donnes en fonction de paramtres du rapport. Les donnes peuvent galement tre rassembles dans des sections logiques, appeles groupes, en fonction de leurs valeurs. La dfinition de groupes de donnes peut galement servir calculer des moyennes ou pourcentages sur ces donnes.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 4/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

1.3 PLUSIEURS FACONS DE PRESENTER LES DONNEES


JasperReports propose de prsenter les donnes sous forme textuelle, ou graphiquement sous forme de diagrammes. Ces diagrammes vont permettre dafficher des donnes dynamiques, qui ne seront pas passes directement au rapport mais calcules partir des donnes fournies. La palette de reprsentation graphique propose est large : le camembert (2D et 3D)

les barres (2D, 3D, en relief, empiles 2D, empiles 3D)

les courbes

les nuages de points

minimum/maximum, cadran, thermomtre,

Ds lments graphiques de bases peuvent galement trs facilement tre ajouts aux rapports (image, ligne, rectangle, ellipse, ) pour lagrmenter.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 5/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

1.4 PLUSIEURS FAONS DE FOURNIR LES DONNEES


JasperReports autorise le dveloppeur fournir les donnes au rapport sous la forme de paramtres. Ces paramtres peuvent tre des instances de nimporte quelle classe Java.

Les donnes peuvent tre rcupres dans une de base de donnes, par lintermdiaire dune connexion JDBC fournie au rapport. Les requtes de rcupration des donnes seront inscrites dans le rapport.

Enfin, les donnes peuvent aussi tre fournies en utilisant des classes spcifiques de la librairie appeles datasources (sources de donnes), implmentant une interface commune. JasperReports inclus un certain nombre de datasource, permettant dutiliser comme source de donnes pour le rapport : Des resultSet JDBC Des objets de type Map Des beans Java Des fichiers XML

Il est galement ais, en cas de besoin spcifique, de raliser sa propre datasource, en implmentant linterface commune toutes ces classes.

1.5 SOUS RAPPORTS


Une autre fonctionnalit de JasperReports est la possibilit dutiliser des sous rapports, et de crer un rapport partir de plusieurs autre rapports. Tout rapport peut devenir le sous rapport dun autre. Cette technique propose deux avantages principaux : Simplification de la ralisation dun rapport en dcoupant la complexit (plusieurs petits rapports simples pour faire un rapport complexe) Possibilit de rutilisation dans plusieurs rapports diffrents dun mme sous rapport prsentant un affichage frquent (cet affichage na donc besoin de ntre dvelopp quune fois)

1.6 EXPORT
JasperReports propose lexport de ces rapports dans de nombreux formats : PDF XLS (Excel) RTF ODF HTML

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 6/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

XML CSV Texte brut

Pour tous ces formats, la librairie propose lexportation directement sous la forme dun flux de donnes, qui pourra par exemple tre directement affich dans un navigateur Internet par exemple, ou lenregistrement dans un fichier.

1.7 DEPENDANCES
JasperReports sappuie sur plusieurs librairies Java open source pour implmenter ses fonctionnalits, parmi lesquelles : iText pour la gnration de PDF JFreeChart pour la gnration de diagrammes et graphiques Jakarta POI pour la gnration de documents Microsoft Office JAXP pour le parsing et la transformation de XML

1.8 UTILISATION TYPIQUE


Le schma suivant illustre le droulement dune utilisation typique de JasperReports :

Cration modle JRXML

Compilation JRXML en modle Jasper

Renseignement du modl Jasper avec les donnes

Export du rapport au format voulu

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 7/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Un rapport est dcrit dans un modle de rapport au format XML. Ces modles peuvent tre crits la main ou gnrer par des outils graphiques comme iReport, qui sera prsenter par la suite. Ces fichiers XML portent lextension .jrxml. Ces modles au format XML sont ensuite compils dans un format binaire. Cette compilation peut ce faire soit programmatiquement via une API, soit via une tache ANT. Le rsultat de cette compilation est un fichier Jasper qui porte lextension .jasper. Ce rapport compil est ensuite renseign avec les donnes afficher (le terme filled est utiliser en anglais dans la documentation). Ce rapport renseign est appel impression Jasper et peut ventuellement tre sauv tel quel dans un fichier lextension .jrprint. Cette impression Jasper sera plus certainement ensuite exporte dans un des formats proposs par JasperReports.

1.9 FONCTIONNALITES AVANCEES


JasperReports propose galement pour la ralisation de rapports un lot de fonctions avances telles que : Gestion de linternationalisation Scriptlets (portions de code Java pouvant tre excut lors du renseignement du rapport) Tableaux croiss Ancres et liens dans les documents Gestion des marques pages dans les fichiers PDF Gestion des formules dans les documents Excel Gestion avance de la mmoire pour les trs gros rapports (Virtualizer)

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 8/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

2 PRESENTATION DE IREPORT

2.1 QUEST CE QUE IREPORT ?


IReport est un logiciel open source, crit entirement en Java, permettant, par lintermdiaire dune interface graphique riche, de crer des modles de rapports au format jrxml de JasperReports. Lutilisation de ce logiciel permet de sabstraire de la complexit de la syntaxe XML de JasperReports, et de gagner du temps lors du dveloppement de modles de rapport.

IReport permet une prise en main complte de JasperReports via son interface graphique, par son support complet des tags XML de la librairie, une interface WYSIWYG pour tous les lments graphiques, un diteur dexpressions, la gestion des sous rapports.

Un module intgr dexportation, associ un support des connexions JDBC et des datasources JasperReports, permet galement de tester le rendu des rapports directement depuis le logiciel.

IReport apporte JasperReports un gain de productivit non ngligeable, une fois loutil pris en main, par rapport dautres solutions de reporting pour Java non outilles.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 9/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

IReport nest pas le seul outil ddition existant pour JasperReport. On peut citer les logiciels suivants : JasperAssistant (plugin Eclipse, payant) JasperPal (stand-alone, gratuit) IReport est nanmoins lditeur officiel de JasperReports, ralis et support par la mme quipe que la librairie de reporting (iReport tait la base un projet indpendant, avant de voir sa popularit reconnatre par JasperSoft et lauteur du logiciel embauch par la socit).

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 10/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

3 CREATION DUN PREMIER RAPPORT

3.1 CREATION DU MODELE DE RAPPORT JRXML


La premire tape de la cration dun rapport est la cration du modle de rapport JRXML correspondant. Loutil iReport sera utilis pour raliser ce modle. Un clic sur licne Nouveau Document de iReport ouvre un nouveau modle vierge :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 11/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Ce modle est un fichier XML, dont voici le code source juste aprs son initialisation par iReport :

<?xml version="1.0" encoding="UTF-8" ?> <!-- Created with iReport - A designer for JasperReports --> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="PremierRapport" columnCount="1" printOrder="Vertical" orientation="Portrait" pageWidth="595" pageHeight="842" columnWidth="535" columnSpacing="0" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" whenNoDataType="BlankPage" isTitleNewPage="false" isSummaryNewPage="false"> <property name="ireport.scriptlethandling" value="2" /> <property name="ireport.encoding" value="UTF-8" /> <import value="java.util.*" /> <import value="net.sf.jasperreports.engine.*" /> <import value="net.sf.jasperreports.engine.data.*" />

<background> <band height="0" isSplitAllowed="true" > </band> </background> <title> <band height="50" isSplitAllowed="true" > </band> </title> <pageHeader> <band height="50" isSplitAllowed="true" > </band> </pageHeader> <columnHeader> <band height="30" isSplitAllowed="true" > </band> </columnHeader> <detail> <band height="100" </band> </detail> <columnFooter> isSplitAllowed="true" >

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 12/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

<band height="30" </band> </columnFooter> <pageFooter> <band height="50" </band> </pageFooter> <lastPageFooter> <band height="50" </band> </lastPageFooter> <summary> <band height="50" </band> </summary> </jasperReport>

isSplitAllowed="true" >

isSplitAllowed="true" >

isSplitAllowed="true" >

isSplitAllowed="true" >

On y remarque le tag englobant de tout modle de rapport, jasperReport, et les tags des diffrents lments constituant un modle de rapport : background : pour dfinir la fond des pages du rapport, peut tre une image, du texte, ou un lment du type watermark. title : pour dfinir le titre du rapport, qui apparat une seule fois au dbut du rapport pageHeader : pour dfinir lentte de page, qui apparat au dbut de chaque page columnHeader : pour dfinir lentte de colonne detail : pour dfinir le dtail du contenu du rapport, le contenu de cet lment est rpt pour chaque enregistrement de la datasource du rapport columnFooter : pour dfinir le pied de colonne pageFooter : pour dfinir le pied de page, qui apparat la fin de chaque page lastPageFooter : pour dfinir le pied de page de la dernire page du rapport, la place du pied de page dfinit dans llment pageFooter summary : pour dfinir le rsum du rapport, qui apparat une seule fois la fin du rapport

Dans ce premier rapport, nous allons afficher un texte statique (c'est--dire non dynamique). Pour cela, on slectionne loutil Texte Statique de iReport et on dessine dans la section detail du rapport un rectangle reprsentant notre zone de texte. Le texte sera ensuite modifiable en double cliquant sur llment.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 13/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Le code source de notre section detail a maintenant la forme suivante : <detail> <band height="100" isSplitAllowed="true" > <staticText> <reportElement x="9" y="9" width="111" height="20" key="staticText-1"/> <box></box> <textElement> <font/> </textElement> <text><![CDATA[Notre premier rapport]]></text> </staticText> </band> </detail>

On remarque les lments :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 14/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

staticText : pour dfinir un texte statique, qui ne dpend ainsi daucune datasource, variable, paramtre ou expression reportElement : pour dfinir la position et la taille dun lment. text : pour dfinir le texte affich par la zone de texte statique

3.2 PREVISUALISATION DUN MODELE DE RAPPORT


IReport intgre la fonctionnalit de prvisualisation du modle de rapport en cours de cration. Le menu Crer offre plusieurs possibilits, notamment : Compiler : pour tester la bonne compilation de notre modle de rapport Excuter (avec une source de donnes vide ou non) : pour visualiser notre rapport, avec le choix du type de datasource que lon lui passe (nous reviendrons sur les datasources dans le chapitre suivant) Choix du type dexportation : pour choisir, parmi les types dexportation offerts par JasperReports, celui avec lequel on souhaite prvisualiser le rapport : PDF, HTML, Excel, CSV ou le visualiseur intgr JasperReports, JRViewer. Voila quoi ressemble notre rapport avec JRViewer :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 15/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

3.3 COMPILATION VIA ANT


Pour pouvoir tre visualiser, le modle de rapport doit donc dabord passer par une tape de compilation durant laquelle il passe du format jrxml au format binaire, que iReport ralise automatiquement lors de lutilisation de sa fonctionnalit de prvisualisation.

Pour une utilisation de JasperReports en mode projet, lors duquel un nombre important de modle de rapport peuvent tre crit, JasperReports propose une tche ANT permettant la compilation en masse de modles de rapport. Cette tache se nomme JRC, dfini dans la classe net.sf.jasperreports.ant.JRAntCompileTask. Elle sutilise de la manire suivante :

<project name="Jasper" default="compile"> <description>Jasper</description> <path id="classpath"> <fileset dir="./"> <include name="**/*.jar" /> </fileset> </path> <target name="compile" description="Compile JRXML reports"> <taskdef name="jrc" classname="net.sf.jasperreports.ant.JRAntCompileTask"> <classpath refid="classpath" /> </taskdef> <jrc destdir="./bin/report/jasper"> <src> <fileset dir="./src/report/jasper"> <include name="**/*.jrxml" /> </fileset> </src> <classpath refid="classpath" /> </jrc> </target> </project>

La tche JRC nous permet dindiquer le rpertoire de destination des modles de rapport compils, et la source de ces modles de rapport, ici sous la forme dun fileset.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 16/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

4 CREATION DUN RAPPORT DYNAMIQUE


Nous avons vu comment crer un premier rapport, ne contenant que des donnes statiques. Nous allons voir dans ce chapitre comment crer un rapport contenant des donnes issues dune base de donnes, dobjets Java ou dun fichier XML.

4.1 RAPPORT ASSOCIE A UNE BASE DE DONNEES


Dans le cadre de ce guide, nous utiliserons une base de donnes sous SQLServer, ayant la structure suivante :

Nous allons commencer par crer un rapport affichant la liste des projets contenus dans notre base. Le rapport indiquera le nom du projet, de lentreprise dans laquelle il se droule, et le nom et le prnom de son responsable.

La requte suivante nous donnera ses informations :

SELECT p.nom_projet,

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 17/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

e.nom_entreprise, em.nom_employe, em.prenom_employe FROM projet p, entreprise e, employe em WHERE p.id_entreprise = e.id_entreprise AND p.id_responsable = em.id_employe

Nous allons maintenant intgrer cette requte SQL dans notre modle de rapport.

4.1.1 CONFIGURATION DE LA CONNEXION


Avant cela, nous allons configurer iReport afin quil se connecte notre base de donnes, en passant par le menu Donnes > Connexions/Sources de donnes, puis le bouton Nouveau, et enfin en choisissant Connexion JDBC dans la liste, pour crer une nouvelle connexion notre base. Une assistant nous permet de saisir le type de driver JDBC que nous souhaitons utiliser, et les informations de connexion notre base.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 18/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Une fois cette connexion dfinie, elle sera utilise par iReport comme connexion pour notre rapport afin daccder aux donnes. Dans le cadre de la gnration dun rapport par une application Java, cette connexion JDBC sera cre dans le code puis passe en paramtre la mthode de remplissage du rapport.

4.1.2 INSCRIPTION DE LA REQUETE


La requte de rcupration des donnes va pouvoir tre inscrite dans le rapport, via le menu Donnes > Consultation de rapport.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 19/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Une fois la requte inscrite, un clic sur bouton Lire les champs va excuter la requte et vrifier la prsence des champs dfinis dans la requte, pour les inscrire dans le rapport et nous permettre de les utiliser pour la ralisation du modle de rapport. Une fois les champs lus, ils sont lists dans la fentre Structure du document de iReport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 20/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Lajout de cette requte et de ces champs dans le rapport ajoute les lments suivants dans le code XML de ce dernier : <queryString> <![CDATA[SELECT p.nom_projet, e.nom_entreprise, em.nom_employe, em.prenom_employe FROM projet p, entreprise e, employe em WHERE p.id_entreprise = e.id_entreprise AND p.id_responsable = em.id_employe]]> </queryString> <field name="nom_projet" class="java.lang.String"/> <field name="nom_entreprise" class="java.lang.String"/> <field name="nom_employe" class="java.lang.String"/> <field name="prenom_employe" class="java.lang.String"/>

La requte est inscrite dans un tag queryString, puis chacun des champs dans un tag field, prcisant leur type.

4.1.3 MISE EN PAGE DU MODELE


Il ne reste plus maintenant qu faire la mis en page de notre modle.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 21/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Une mise en page sous forme de tableau a t ralise pour prsenter les donnes. Trois textes statiques ont t ajouts la partie columHeader, reprsentant les enttes de colonnes du tableau. Puis dans la partie detail, les champs ajouts au rapport lors de ltape prcdente ont t ajouts par glisser/dposer depuis la fentre Structure du document. Attardons-nous sur la syntaxe de lappel ces champs :

$F{nom_du_champ}

Cette syntaxe est une expression, au sens iReport. Les expressions sont proches du langage Java, et permettent, entre autre dans ce cas, un affichage plus sophistiqu des donnes, comme ici en concatnant la valeur de deux champs. Le code source XML du rapport est modifi de la manire suivante : <columnHeader> <band height="30" isSplitAllowed="true" > <staticText> <reportElement x="9" y="12" width="99" height="15" key="staticText-1"/> <box></box> <textElement textAlignment="Center"> <font pdfFontName="Helvetica-Bold" isBold="true"/>

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 22/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

</textElement> <text><![CDATA[Entreprise]]></text> </staticText> <staticText> <reportElement x="119" y="12" width="100" height="15" key="staticText-2"/> <box></box> <textElement textAlignment="Center"> <font pdfFontName="Helvetica-Bold" isBold="true"/> </textElement> <text><![CDATA[Projet]]></text> </staticText> <staticText> <reportElement x="239" y="12" width="220" height="15" key="staticText-3"/> <box></box> <textElement textAlignment="Center"> <font pdfFontName="Helvetica-Bold" isBold="true"/> </textElement> <text><![CDATA[Responsable]]></text> </staticText> </band> </columnHeader> <detail> <band height="33" isSplitAllowed="true" > <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="9" y="5" width="99" height="18" key="textField"/> <box></box> <textElement textAlignment="Center"> <font/> </textElement> <textFieldExpression class="java.lang.String"> <![CDATA[$F{nom_entreprise}]]> </textFieldExpression> </textField> <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 23/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

<reportElement x="119" y="5" width="100" height="18" key="textField"/> <box></box> <textElement textAlignment="Center"> <font/> </textElement> <textFieldExpression class="java.lang.String"> <![CDATA[$F{nom_projet}]]> </textFieldExpression> </textField> <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="239" y="5" width="220" height="18" key="textField"/> <box></box> <textElement textAlignment="Center"> <font/> </textElement> <textFieldExpression class="java.lang.String"> <![CDATA[$F{nom_employe}+" "+$F{prenom_employe}]]> </textFieldExpression> </textField> </band> </detail>

Observons quoi ressemble notre rapport maintenant, en utilisant la fonctionnalit dexportation de iReport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 24/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Nous pouvons observer que le contenu de la partie detail est rpt pour chaque enregistrement retourn par la requte de slection incluse dans le rapport.

4.1.4 PARAMETRAGE DE LA REQUETE


Linscription de la requte dans le rapport est le moyen le plus rapide de gnrer un rapport associ une base de donnes, mais ce nest pas solution trs flexible. Quand la requte a besoin dtre modifi, il est ncessaire de modifier la source du modle de rapport au format jrxml. JasperReports offre la possibilit de paramtrer notre requte et de tirer partie des paramtres de rapport pour personnaliser notre requte la gnration. Imaginons que lon souhaite afficher la liste des projets pour une certaine entreprise. Commenons par ajouter un paramtre notre rapport, reprsentant lentreprise pour laquelle nous voulons afficher les projets. Dans iReport, on passe par le menu Afficher > Paramtres pour afficher la liste des paramtres du rapport, et on clique sur le bouton Nouveau pour en ajouter un.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 25/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Lassistant nous permet dindiquer le nom du paramtre, son type, sa valeur par dfaut, et enfin, par lintermdiaire dune case cocher, si lon souhaite qu lexcution dans iReport, une fentre de dialogue nous demande la valeur que lon souhaite donner ce paramtre (dans le cas contraire, cest la valeur par dfaut qui sera utilise). On retrouve ce paramtre dans le code source du modle de rapport :

<parameter name="entreprise" isForPrompting="true" class="java.lang.String"> <defaultValueExpression> <![CDATA["Entreprise 1"]]> </defaultValueExpression> </parameter>

Nous allons ensuite pouvoir ensuite utiliser ce paramtre dans la requte SQL de slection des donnes :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 26/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

On remarque la syntaxe de lappel un paramtre :

$P{nom_du_paramtre}

Utilisons la fonctionnalit dexport de iReport pour voir notre rapport. A lexcution, si nous lavons demand lors de la cration du paramtre, une fentre de dialogue demandera la valeur que lon souhaite donner au paramtre entreprise :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 27/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Dans le cadre de la gnration dun rapport par une application Java, la valeur des paramtres dun rapport est renseigne sous la forme dun objet de type Map, dans lequel pour chaque enregistrement le nom du paramtre est la cl. Cette Map est ensuite passe en paramtre la mthode de remplissage du rapport, en mme temps que la connexion JDBC la base.

4.2 RAPPORT ASSOCIE A UNE SOURCE DE DONNEES


Nous avons comment un rapport peut utiliser une connexion JDBC pour rcuprer les donnes afficher sur un rapport dynamique. Un autre moyen pour fournir des donnes un rapport est dutiliser une datasource (source de donnes). Une datasource est une classe implmentant linterface net.sf.jasperreports.engine.JRDataSource. JasperReports fournit plusieurs implmentations de cette interface, permettant dutiliser comme source de donnes divers lments : des resultSets JDBC Des objets de type Map Des beans Java Des fichiers XML

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 28/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Une implmentation particulire galement propose est la datasource vide (JREmptyDataSource). En effet, il nest pas possible de crer un rapport sans fournir une connexion ou une datasource. La datasource vide sera ainsi un moyen de fournir une source de donnes un rapport entirement statique, ou dont les lments dynamiques ne serait fournis au rapport que sous forme de paramtres.

Nous allons dcrire dans ce chapitre lutilisation comme source de donnes dobjets Java, et dun fichier XML.

4.2.1 RAPPORT ASSOCIE A DES OBJETS JAVA


Les objets Java utiliss pour fournir des donnes au rapport seront de simples JavaBeans. Il devra particulirement proposer des accesseurs et modificateurs (getters et des setters) pour toutes ces proprits. Voila par exemple le code source dun JavaBean reprsentant une entreprise, sur le modle du schma de base de donnes du paragraphe 4.1 :

public class Entreprise { /** * Identifiant de l'entreprise */ private Integer idEntreprise = null; /** * Nom de l'entreprise */ private String nomEntreprise = null; /** * Constructeur */ public Entreprise() { } /** * Constructeur * @param idEntreprise l'identifiant de l'entreprise * @param nomEntreprise le nom de l'entreprise */ public Entreprise(Integer idEntreprise, String nomEntreprise) { this.idEntreprise = idEntreprise; this.nomEntreprise = nomEntreprise; } /** * Setter de idEntreprise * @param idEntreprise l'identifiant de l'entreprise

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 29/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

*/ public void setIdEntreprise(Integer idEntreprise) { this.idEntreprise = idEntreprise; } /** * Getter de idEntreprise * @return l'identifiant de l'entreprise */ public Integer getIdEntreprise() { return idEntreprise; } /** * Setter de nomEntreprise * @param nomEntreprise le nom de l'entreprise */ public void setNomEntreprise(String nomEntreprise) { this.nomEntreprise = nomEntreprise; } /** * Getter de nomEntreprise * @return le nom de l'entreprise */ public String getNomEntreprise() { return nomEntreprise; } }

4.2.1.1 CONFIGURATION DE LA SOURCE DE DONNES


Nous allons configurer iReport afin quil puisse utiliser nos JavaBeans comme datasource, en passant par le menu Donnes > Connexions/Sources de donnes, puis le bouton Nouveau, et enfin en choisissant Source de donnes densemble JavaBeans dans la liste. Un assistant nous permet de saisir le nom de la fabrique et de la mthode permettant iReport de rcuprer lensemble des instances des JavaBeans. Cet ensemble peut tre fournit sous deux formes, correspondants deux implmentations diffrentes (fournis par JasperReports) dune source de donnes composes de JavaBeans : Sous le forme dun tableau, pour une datasource de type JRBeanArrayDataSource Sous la forme dun objet de JRBeanCollectionDataSource type Collection, pour une datasource de type

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 30/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

iReport se chargera de crer linstance de la datasource correspondante au type de retour de la fabrique, partir de ce retour. Dans le cadre de la gnration dun rapport par une application Java, cette datasource sera cre dans le code puis passe en paramtre la mthode de remplissage du rapport.

4.2.1.2 INSCRIPTION DES PROPRITS DES OBJETS


De manire similaire linscription de la requte SQL dans le chapitre prcdent, le menu Donnes > Consultation de rapport va nous permettre dinscrire le type dobjets que la datasource va fournir au rapport et dajouter facilement les proprits de cette classe dans les champs du rapport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 31/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

On remarquera que JasperReports permet dutiliser un objet comme proprit dun JavaBeans, et est capable daller chercher les proprits de cet objet pour les ajouter comme champ du rapport. Les proprits slectionnes sont maintenant lists dans la fentre Structure du document de iReport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 32/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

On peut retrouver ces champs dans le code source du modle de rapport : <field name="nomProjet" class="java.lang.String"> <fieldDescription><![CDATA[nomProjet]]></fieldDescription> </field> <field name="nomEntreprise" class="java.lang.String"> <fieldDescription><![CDATA[entreprise.nomEntreprise]]></fieldDescription> </field> <field name="nomEmploye" class="java.lang.String"> <fieldDescription><![CDATA[responsable.nomEmploye]]></fieldDescription> </field> <field name="prenomEmploye" class="java.lang.String"> <fieldDescription><![CDATA[responsable.prenomEmploye]]></fieldDescription> </field>

4.2.1.3 MISE EN PAGE DU MODLE


Par rapport notre exemple prcdent, les champs ne portent plus les mmes noms, le modle de rapport va ainsi tre modifi en consquence :

Le rsultat obtenu sera le mme que dans le chapitre prcdent.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 33/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

4.2.2 RAPPORT ASSOCIE A UN FICHIER XML


Un document XML peut galement servir de source de donnes. Dans ce cas, cest une expression XPath qui servira extraire les donnes destination du rapport. Le document XML suivant sera utilis comme source de donnes pour la suite de ce chapitre (il sagit dune simple srialisation du modle objet utilis au chapitre prcdent) : <?xml version="1.0" encoding="UTF-8"?> <projetData> <projet> <idProjet>1</idProjet> <nomProjet>Projet 1</nomProjet> <entreprise> <idEntreprise>1</idEntreprise> <nomEntreprise>Entreprise 1</nomEntreprise> </entreprise> <responsable> <idEmploye>1</idEmploye> <entreprise> <idEntreprise>1</idEntreprise> <nomEntreprise>Entreprise 1</nomEntreprise> </entreprise> <nomEmploye>Dupont</nomEmploye> <prenomEmploye>Jean</prenomEmploye> </responsable> </projet> <projet> <idProjet>2</idProjet> <nomProjet>Projet 2</nomProjet> <entreprise> <idEntreprise>1</idEntreprise> <nomEntreprise>Entreprise 1</nomEntreprise> </entreprise> <responsable> <idEmploye>2</idEmploye> <entreprise> <idEntreprise>1</idEntreprise> <nomEntreprise>Entreprise 1</nomEntreprise> </entreprise> <nomEmploye>Morin</nomEmploye> <prenomEmploye>Bernard</prenomEmploye> </responsable> </projet> <projet> <idProjet>3</idProjet> <nomProjet>Projet 3</nomProjet> <entreprise> <idEntreprise>2</idEntreprise> <nomEntreprise>Entreprise 2</nomEntreprise> </entreprise> <responsable>

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 34/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

<idEmploye>3</idEmploye> <entreprise> <idEntreprise>2</idEntreprise> <nomEntreprise>Entreprise 2</nomEntreprise> </entreprise> <nomEmploye>Durant</nomEmploye> <prenomEmploye>Pierre</prenomEmploye> </responsable> </projet> <projet> <idProjet>4</idProjet> <nomProjet>Projet 4</nomProjet> <entreprise> <idEntreprise>2</idEntreprise> <nomEntreprise>Entreprise 2</nomEntreprise> </entreprise> <responsable> <idEmploye>4</idEmploye> <entreprise> <idEntreprise>2</idEntreprise> <nomEntreprise>Entreprise 2</nomEntreprise> </entreprise> <nomEmploye>Alart</nomEmploye> <prenomEmploye>Arnaud</prenomEmploye> </responsable> </projet> </projetData>

4.2.2.1 CONFIGURATION DE LA SOURCE DE DONNES


Nous allons configurer iReport afin quil puisse utiliser ce fichier XML comme datasource, en passant par le menu Donnes > Connexions/Sources de donnes, puis le bouton Nouveau, et enfin en choisissant Source de donnes de fichier XML dans la liste. Un assistant nous permet de saisir le chemin vers le fichier XML, puis de choisir comment sera fournit la requte XPath permettant daccder aux donnes : Soit en passant la requte au rapport lors du remplissage de celui-ci. Cette solution permettra, dans le cadre de la gnration dun rapport par une application Java, de faire passer la requte au rapport par le code java Soit en inscrivant la requte dans le rapport, la manire de linscription de la requte SQL dans le chapitre 4.1.2

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 35/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Dans le cadre de la gnration dun rapport par une application Java, le chemin vers le fichier XML, ou directement le contenu du fichier, sera pass en paramtre la mthode de remplissage du rapport, en compagnie ou non de la requte XPath, en fonction du choix dcrit ci-dessus.

4.2.2.2 INSCRIPTION DES NOEUDS


De manire similaire linscription de la requte SQL ou des proprits des objets Java dans les chapitres prcdents, le menu Donnes > Consultation de rapport va nous permettre dinscrire les nuds du fichier XML que la datasource va utiliser comme champs du rapport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 36/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Lajout de ces champs dans la fentre Structure du document de iReport est identique au chapitre prcdent, et le rsultat dans le code source sera le suivant :

<queryString language="xPath"><![CDATA[/projetData/projet]]></queryString> <field name="nomProjet" class="java.lang.String"> <fieldDescription><![CDATA[nomProjet]]></fieldDescription> </field> <field name="nomEntreprise" class="java.lang.String"> <fieldDescription><![CDATA[entreprise/nomEntreprise]]></fieldDescription> </field> <field name="nomEmploye" class="java.lang.String"> <fieldDescription><![CDATA[responsable/nomEmploye]]></fieldDescription> </field> <field name="prenomEmploye" class="java.lang.String"> <fieldDescription><![CDATA[responsable/prenomEmploye]]></fieldDescription> </field>

On retrouve le tag queryString, accompagn de lattribut langage, qui inscrit la requte Xpath dans le rapport. Ce tag ne sera prsent que si lajout de le requte dans le rapport y est choisit dans lassistant.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 37/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Les tags du fichier XML ayant le mme nom que les proprits des objets Java du chapitre prcdent, la mise en page du modle de rapport na pas tre modifie pour obtenir le mme rsultat que dans les chapitres prcdents.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 38/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

5 PARAMETRAGE ET MISE EN PAGE DUN RAPPORT FONCTIONNALITES AVANCEES

5.1 COLONNES
JasperReports permet de gnrer des rapports possdant plusieurs colonnes. Dans ce contexte, le contenu des sections columnHeader et columnFooter sont rpts pour chacune des colonnes, et le contenu de la section detail devra tre considr comme une cellule de ces colonnes. En gardant notre modle prcdent, affichons la liste de tous les employs du modle, dans un rapport 3 colonnes.

Dans la fentre des proprits du document, on indique le nombre de colonne dont on veut composer le document. La largeur de colonne est mis automatiquement jour pour obtenir 3 colonnes de mme largeur.

Le contenu dune colonne est ensuite dfini :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 39/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Pour le rsultat suivant :

Dans le code source du rapport, la dfinition du nombre de colonnes se fait dans la tag principal du document :

<jasperReport name="PremierRapport" columnCount="3" printOrder="Vertical" orientation="Portrait" pageWidth="595" pageHeight="842" columnWidth="178" columnSpacing="0"

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 40/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" whenNoDataType="BlankPage" isTitleNewPage="false" isSummaryNewPage="false">

On y remarque lattribut printOrder. Celui permet dindiquer le sens de remplissage du rapport, vertical comme dans notre exemple, ou horizontal, en lui donnant la valeur Horizontal .

5.2 GROUPE DE DONNEES


JasperReports permet deffectuer des regroupements logiques sur les donnes de la datasource dun rapport, afin dinclure une rupture entre chacun de ces groupes (nouvelle colonne ou nouvelle page par exemple. Reprenons comme exemple la liste demploys du chapitre prcdent. Nous souhaitons maintenant afficher ces employs regroups par la premire lettre de leur nom de famille. Chaque lettre sera liste dans une colonne diffrente. Dfinissons un nouveau groupe de donnes bas sur la premire lette du nom de lemploy. Dans iReport, on , ou par le menu Afficher > Groupe de rapport. On accde linterface de cration de groupe par licne clique sur Nouveau et on arrive sur linterface de cration dun groupe.

Le regroupement ce fait sur la base dune expression. Plusieurs options de rupture de mise en page existent, nous choisissons de dmarrer une nouvelle colonne.

Le modle de rapport est lgrement modifi pour afficher linitiale en entte de chaque groupe :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 41/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Cet entte est inscrit dans un entte de groupe. Pour chaque groupe, on peut optionnellement dfinir un entte et un pied de groupe afin dafficher un texte ou autre au dbut et la fin de laffichage de chaque groupe.

Le rsultat obtenu est le suivant :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 42/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

La dfinition du groupe dans le code source du modle de rapport la forme suivante :

<group

name="Initial" isStartNewColumn="true" > <groupExpression> <![CDATA[$F{nomEmploye}.substring(0,1)]]> </groupExpression> <groupHeader> <band height="31" isSplitAllowed="true" > <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="8" y="5" width="166" height="21" key="textField-1"/> <box></box> <textElement> <font pdfFontName="Helvetica-Bold" size="12" isBold="true"/> </textElement> <textFieldExpression class="java.lang.String">

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 43/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

<![CDATA[$F{nomEmploye}.substring(0,1)]]> </textFieldExpression> </textField> </band> </groupHeader> <groupFooter> <band height="0" </band> </groupFooter> </group>

isSplitAllowed="true" >

5.3 VARIABLES
Afin de factoriser le calcul dune expression pouvant tre raliser plusieurs fois dans un mme rapport, JasperReports offre la possibilit de dclarer des variables au sein dun rapport. On accde lcran de gestion des variables par licne ou le menu Afficher > Variables.

On remarque ds prsent les variables intgrs chaque rapport : PAGE_NUMBER : contient le nombre total de pages du rapport COLUMN_NUMBER : contient le nombre courant de colonnes REPORT_COUNT : contient le nombre denregistrements dj traits PAGE_COUNT : contient le nombre denregistrements dj traits dans la page courante COLUMN_COUNT : contient le nombre denregistrement dj traits dans la colonne courante <nomGroupe>_COUNT : contient le nombre denregistrement dj traits dans la groupe courant Ces variables seront uniquement accessible en lecture pour lutilisateur. Lutilisateur peut dfinir ses propres variables en cliquant sur le bouton Nouveau :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 44/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Plusieurs attributs permettent un contrle sur lvolution de la valeur de la variable, notamment : Type de calcul : indique que type de calcul va tre fait sur la variable lors du remplissage du rapport. Les valeurs possibles sont : o o o o o o o o o o o Rien (pas de calcul) Dcompte Dcompte distinct Somme Moyenne Plus basse Plus lev Ecart standard Ecart Systme (calcul dfini par lutilisateur, par exemple via une scriptlet) Premier (la premire valeur rencontre)

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 45/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Rinitialiser le type : indique quelle occasion la variable doit tre rinitialiser. Les valeurs possibles sont : o o o o o Nant (pas dinitialisation) Rapport (initialiser une fois au dbut du rapport) Page (initialiser au dbut de chaque page) Colonne (initialiser au dbut de chaque colonne) Groupe (initialiser au dbut de chaque groupe) (pour ce dernier choix, on indiquera sur quel groupe la variable doit tre rinitialise dans lattribut Rinitialiser le groupe)

Incrmenter le type : indique quelle occasion la variable doit tre incrmenter. Les valeurs possibles sont les mmes que pour lattribut Rinitialiser le type.

Nous souhaitons maintenant afficher en pied de groupe de la liste demploys regroups par initiale, le nombre demploys pour chaque groupe. Plusieurs possibilits vont soffrir nous : Utiliser la variable intgre Initial_COUNT, associe notre groupe Initial : celle-ci est la meilleure rponse notre besoin. Utiliser la variable intgre COLUMN_COUNT : en effet, comme chacun de nos groupes est plac dans une colonne diffrente, cette variable rpondrait galement notre besoin Utiliser une variable dfini par lutilisateur : la cration dune variable utilisant les attributs offerts par JasperReports (un type de calcul Dcompte, avec une rinitialisation sur la groupe Initial) rpondrait encore notre besoin.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 46/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Les variables du rapport sont lists dans la fentre Structure du document de iReport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 47/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Le modle de rapport est modifi pour afficher le total des employs de chaque groupe, en utilisant la variable Initial_COUNT :

Pour le rsultat suivant :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 48/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

5.4 SOUS RAPPORT


Les sous rapports permettent lincorporation dun rapport lintrieur dun autre rapport. Les avantages de cette fonctionnalit sont nombreux, notamment la possibilit de garder des rapports au contenu et la mise en page simple pour composer un rapport potentiellement complexe. Les possibilits de factorisation dun lment de rapport prsent dans plusieurs rapports de lapplication est galement noter.

Nous avons vu que pour remplir un rapport, 3 lments sont ncessaires : Un modle de rapport Des paramtres Une datasource (ou une connexion JDBC)

Ces 3 lments devront donc tre indiqu llment sous rapport, via le rapport parent. Pour illustrer lutilisation dun sous rapport, nous allons reprendre le premier exemple, la liste des projets (cf 4). Nous allons ajouter cet exemple, pour chaque projet list, la liste des employs travaillant sur ce projet. Cette liste sera un sous rapport.

Commenons par crer ce sous rapport.

Ce rapport utilisera une datasource lui fournissant une collection demploys. Cette datasource sera cre lexcution par le rapport principal et passe au sous rapport. Nous crons un rapport utilisant les champs de la classe Employe, en affichant les enregistrements sur 3 colonnes, avec remplissage horizontal :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 49/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Intgrons maintenant ce rapport dans notre rapport principal, par lintermdiaire dun lment sous rapport. IReport propose un assistant, accessible via licne .

Via lassistant, nous indiquons que nous utilisons en tant que sous rapport un rapport existant :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 50/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Il faut ensuite indiquer quelle datasource (ou connexion) va utiliser le sous rapport. Les possibilits ici sont diverses : Le sous rapport pourra utiliser la mme datasource (ou connexion) que le rapport principal, que celui-ci pourra lui passer via les paramtres intgrs REPORT_DATA_SOURCE (ou REPORT_CONNECTION)

Le sous rapport pourra utiliser une autre datasource (ou connexion) que le rapport principal pourra lui passer via un paramtre utilisateur renseign lexcution du rapport principal.

Le sous rapport peut enfin utiliser une datasource cre lexcution partir dun paramtre ou dun champ du rapport principal. Cest la possibilit que nous allons choisir ici, en crant une instance de la classe JRBeanCollectionDataSource de JasperReports, prenant en paramtre la collection dinstance de la classe Employe porte par la classe Projet, que nous avons incluse dans les champs du rapport principal.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 51/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 52/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Llment sous rapport cr apparat dans le modle de notre rapport principal :

En double cliquant sur cet lment, on accde la fentre de paramtrage du sous rapport, que nous allons dtailler : Longlet Commun permet de rgler la mise page du sous rapport dans le rapport principal, en particulier de prciser une ventuelle condition daffichage, sous la forme dune expression

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 53/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Longlet Rapport secondaire permet de dfinir une Map de paramtres passer au sous rapport (peu utilis), ainsi que lexpression dfinissant la datasource (ou connexion) fournir au sous rapport

Longlet Rapport secondaire (autre) permet de dfinir laccs au rapport qui servira de sous rapport. Cet accs peut tre dclar de plusieurs manires : o Sous la forme dun String. Cest la manire la plus commune. Dans ce cas, JasperReports va dabord essayer de se servir de cette chane comme dune URL. Si cela choue, la String sera utiliser comme chemin daccs sur le systme de fichier local. Si cela choue encore, JasperReports essaiera de charger le modle de rapport depuis le CLASSPATH. Si tout ceci choue, une Exception est leve. Sous la forme dune instance de la classe JasperReport de JasperReports. Sous la forme dune instance de la classe java.io.File Sous la forme dune instance de la classe java.io.InputStream Sous la forme dune instance de la classe java.net.URL

o o o o

Pour ces 4 dernires formes, la faon la plus commune de passer ces instances est de passer par un paramtre du rapport. Enfin cet onglet permet de mapper les paramtres du sous rapport avec des lments (paramtre, variable, champ ou expression) du rapport principal ; ainsi que, inversement, de mapper des variables du rapport secondaire avec des variables du rapport principal pour fournir un moyen au rapport secondaire de retourner des valeurs au rapport principal.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 54/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Lexcution du nouveau rapport principal donne le rsultat suivant :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 55/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Llment sous rapport a la forme suivante dans le code source du rapport principal :

<subreport isUsingCache="true"> <reportElement x="8" y="29" width="519" height="16" key="subreport-1"/> <dataSourceExpression> <![CDATA[new JRBeanCollectionDataSource($F{listeEmploye})]]> </dataSourceExpression> <subreportExpression class="java.lang.String"> <![CDATA[$P{SUBREPORT_DIR} + "PremierSousRapport.jasper"]]> </subreportExpression> </subreport>

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 56/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

5.5 GRAPHIQUES
JasperReports propose la possibilit de reprsenter les donnes sous forme de graphique. Cette fonctionnalit se base sur lutilisation de la bibliothque Java JFreeChart. La gamme de diagramme proposs est large : Camenbert Barres Courbe

Chaque type de diagramme sappuiera sur un ensemble de donnes dfini par lutilisateur. Voyons ceci par lexemple en affichant sur le rapport prcdent un camembert reprsentant le nombre demploys par projet.

Dans iReport, lajout dun diagramme dans le rapport se fait par clic sur licne de diagramme rajouter :

puis en choisissant le type

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 57/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Laccs aux proprits du diagramme se fait en faisant apparatre le menu contextuel de llment (clic-droit sur llment) et en slectionnant Proprits du tableau :

Longlet Proprits du tableau contient une liste de paramtres contrlant lapparence du diagramme.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 58/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Longlet Donnes du tableau va permettre de dfinir les donnes dfinissant le diagramme.

Le sous onglet Ensemble de donnes rgle les paramtres de rinitialisation et dincrmentation de la valeur de lexpression du rapport.

Enfin, le sous onglet Dtails permet de dfinir lensemble de donnes sur lequel le diagramme va sappuyer. Cet onglet sera diffrent en fonction du type de diagramme choisi, afin de dfinir un ensemble de donnes en adquation avec le diagramme.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 59/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Dans notre exemple, pour un diagramme de type camembert, lensemble de donnes du diagramme va tre dfinir par lintermdiaire de 3 lments : Lexpression de cl permet didentifier de manire unique chaque part du camembert. Lexpression de valeur spcifie la valeur numrique associer avec la cl Lexpression dtiquette spcifie le label associ chaque part du camembert

Notre exemple dsirant le nombre demploys par projet, les valeurs suivantes sont utilises : Cl : le nom, unique, du projet Valeur : la taille de la collection demploys du projet Etiquette : cette mme taille, mais convertit en chane de caractres

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 60/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Le diagramme obtenu correspond nos attentes :

La reprsentation de ce diagramme dans le code source du modle de rapport est la suivante : <pieChart> <chart hyperlinkTarget="Self" > <reportElement x="8" y="8" width="239" height="135" key="element-1"/> <box></box> <chartLegend textColor="#000000" backgroundColor="#FFFFFF" > </chartLegend> </chart> <pieDataset> <dataset></dataset> <keyExpression><![CDATA[$F{nomProjet}]]></keyExpression> <valueExpression> <![CDATA[$F{listeEmploye}.size()]]>

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 61/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

</valueExpression> <labelExpression> <![CDATA[String.valueOf($F{listeEmploye}.size())]]> </labelExpression> <sectionHyperlink></sectionHyperlink> </pieDataset> <piePlot> <plot /> </piePlot> </pieChart>

5.6 SCRIPTLETS
JasperReports autorise lexcution de portions de code Java certains moments du remplissage dun rapport. Cest portions de code sont appels scriptlets.

Lcriture se ralise en entendant une des deux classes de JasperReports suivantes : JRAbstractScriplet : cette classe contient un certain nombre de mthodes abstraites qui devront tre surcharges dans la classe fille JRDefaultScriplet : cette classe utilitaire tend JRAbstractScriplet et fournit une implmentation par dfaut vide de chacune des mthodes de la classe mre. En hritant de cette classe, lutilisateur a seulement besoin de surcharger les mthodes dont il a besoin.

Les mthodes dfinies par la classe JRAbstractScriplet sont automatiquement appeles par JasperReports un moment prcis lors du remplissage du rapport. Ces mthodes, au nom rvlateur, sont les suivantes : void beforeReportInit() void afterReportInit() void beforePageInit() void afterPageInit() void beforeColumnInit() void afterColumnInit() void beforeGroupeInit() void afterGroupeInit() void beforeDetailEval() void afterDetailEval()

La classe de scriptlets de lutilisateur peut tre crite et compiler via un outil externe comme Eclipse et le chemin vers cette classe prcis dans les options du document :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 62/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

iReport propose galement un diteur de scriptlets. En utilisant ce mode, la classe Java de scriptlets est gr en interne par iReport.

Lditeur de scriptlets de iReport est accessible par le menu Modifier > Editeur de scriptlets.

Les scriptlets ont accs aux variables, champs et paramtres du rapport, par lintermdiaire des mthodes suivantes :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 63/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

getVariableValue(nomVariable) et setVariableValue(nomVariable, rcuprer et modifier la valeur dune variable

valeur) pour

getFieldValue(nomChamp) et setFieldValue(nomChamp, valeur) pour rcuprer et modifier la valeur dun champ getParameterValue(nomParametre) et setParameterValue(nomParametre, valeur) pour rcuprer et modifier la valeur dun paramtre

Notons enfin que la classe de scriptlets de lutilisateur pourra contenir dautres mthodes que celles dfinies par la classe JRAbstractScriplet, et que ces mthodes pourront tre appeles par lintermdiaire du paramtre intgr REPORT_SCRIPTLET. Par exemple si la classe contient une mthode toto(), elle pourra tre appele par la syntaxe : $P{REPORT_SCRIPTLET}.toto()

Illustrons lutilisation de scriptlets en affichant sur notre rapport le temps dexcution entre linitialisation du rapport et la fin de lvaluation des donnes. Nous modifions le rapport pour afficher une variable nomme evalTime qui aura t pralablement cre :

Via lditeur de scriptlets de iReport, nous renseignons les lments suivants : Deux variables pour la date de dbut et la date de fin

Linitialisation de la date de dbut, avant linitialisation du rapport :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 64/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Linitialisation de la date de fin, puis linscription de la dure dans la variable evalTime, aprs lvaluation des donnes :

A lexcution, nous obtenons le rsultat suivant :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 65/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Dans le code source du modle de rapport, lemploi dune classe de scriptlets se dfini de la manire suivante : <jasperReport name="PremierRapport" columnCount="1" printOrder="Vertical" orientation="Portrait" pageWidth="595" pageHeight="842" columnWidth="535" columnSpacing="0" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20" whenNoDataType="AllSectionsNoDetail" scriptletClass="PremierRapportScriptlet" isTitleNewPage="false" isSummaryNewPage="false">

5.7 VIRTUALISATION
Lors de la gnration de trs grand rapport, manipulant de grandes quantits de donnes, il peut arriver que la quantit de mmoire ncessaire la gnration de ce rapport soit suprieure la quantit de mmoire alloue la JVM, provoquant une OutOfMemoryException.

Pour rsoudre ce problme, JasperReports propose un mcanisme de virtualisation de la mmoire : lors de lexcution du rapport, des segments de donnes sont stocks sur le disque afin de librer de la mmoire.

Lutilisation de cette fonctionnalit se fait par lintermdiaire du paramtre intgr REPORT_VIRTUALIZER. Celui-ci devra tre renseign avec une instance dune classe implmentant linterface JRVirtualizer de JasperReports. JasperReports propose plusieurs implmentations de cette interface : JRFileVirtualizer : virtualisation des donnes dans des fichiers JRSwapFileVirtualizer : virtualisation des donnes dans un seul gros fichier JRGzipVirtualizer : les donnes non utilises sont zippes, mais gardes en mmoire

Voici un exemple dutilisation de JRFileVirtualizer dans le code Java : // 2 arguments : le nombre de page maximum en mmoire, le rpertoire // utilis pour stock les segments de donnes JRFileVirtualizer fileVirtualizer = new JRFileVirtualizer(3, "cache"); HashMap parameters = new HashMap(); parameters.put(JRParameter.REPORT_VIRTUALIZER, fileVirtualizer);

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 66/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

En cas de besoin spcifique (si lon souhaite stocker les segments de donnes dans une base de donnes par exemple), il est possible de raliser une implmentation personnalise de linterface JRVirtualizer.

Dans iReport, pour utiliser la virtualisation, il faut slectionner loption Utiliser le virtualiseur de rapport dans le menu Crer. Le virtualiseur utilis est configurable dans les paramtres du programme, dans longlet Compiler.

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 67/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

6 EXPORTATION DUN RAPPORT


JasperReports offre la possibilit dexporter les rapports dans plusieurs formats de fichier : PDF XLS (Excel) RTF ODF HTML XML CSV Texte brut

Lexportation se ralise par lintermdiaire de classes tendant linterface JRExporter de JasperReports. Les deux mthodes principales de cette interface sont : void setParameter (JRExporterParameter parameter, Object value) : pour renseigner les paramtres ncessaires lexportation void exportReport() : pour lancer lexportation du rapport

Dans la plupart des cas, deux paramtres doivent tre renseigns : linstance dobjet de classe JasperPrint, reprsentant le rapport rempli au format natif le flux ou fichier de sortie utilis pour lexport

La classe JRExporterParameter contient un certain nombre de constantes reprsentant les paramtres pouvant tre passs lexportateur, dont les paramtres ci-dessus via les constantes : JRExporterParameter.JASPER_PRINT pour linstance dobjet de classe JasperPrint JRExporterParameter.OUTPUT_FILE_NAME pour le nom du fichier de sortie JRExporterParameter.OUPUT_STREAM pour le flux de sortie

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 68/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Lexportation dun rapport suit toujours la mme logique. Voici quelques exemples dexportation : HashMap<String, Object> params = new HashMap<String, Object>(); // ... // Renseignment des paramtres // ... //Remplissage du rapport JasperPrint jasperPrint = JasperFillManager.fillReport( "rapport.jasper", params, new JREmptyDataSource()); // export en pdf JRPdfExporter pdfExporter = new JRPdfExporter(); pdfExporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint); pdfExporter.setParameter(JRPdfExporterParameter.OUTPUT_FILE, new File("rapport.pdf")); pdfExporter.exportReport();

Gnration en PDF
HashMap<String, Object> params = new HashMap<String, Object>(); // ... // Renseignment des paramtres // ... //Remplissage du rapport JasperPrint jasperPrint = JasperFillManager.fillReport( "rapport.jasper", params, new JREmptyDataSource()); // export en xls JRXlsExporter excelExporter = new JRXlsExporter(); excelExporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint); excelExporter.setParameter(JRPdfExporterParameter.OUTPUT_FILE, new File("rapport.xls")); excelExporter.exportReport();

Gnration en XLS

Dans iReport, le Menu Crer propose la gnration dans les formats supports par JasperReports :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 69/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

En reprenant notre exemple du chapitre prcdent :

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 70/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Gnration en PDF

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 71/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Gnration en XLS

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 72/73

Guide dutilisation JasperReports & iReport Communaut Adullact Projet ACube

Version x.y du JJ/MM/AAAA / Etat : xxx


Cette cration est mise disposition selon le Contrat Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Page 73/73