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

Rdaction

0.1

JP.Wilsch

Description

Vrification

Cration

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

2
2.1

3
3.1
3.2
3.3

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

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


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

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"

isSplitAllowed="true" >

</band>
</detail>
<columnFooter>

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>

isSplitAllowed="true" >

isSplitAllowed="true" >

isSplitAllowed="true" >

isSplitAllowed="true" >

</jasperReport>

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

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.

de

type

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

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

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

o
o

Sous la forme dune instance de la classe java.io.InputStream


Sous la forme dune instance de la classe java.net.URL

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

Vous aimerez peut-être aussi