Lors de la création d’un rapport, le choix s’offre à nous de personnaliser toujours plus la mise en page. Pour ce faire iReport nous propose soit de faire la modification directement dans les propriétés de l’objet, soit de créer des styles.
Ces styles pourront être réutilisés sur plusieurs objets d’un rapport rapidement et facilement avec une technique du drag and drop des différents styles sur ces objets.
Lors de la création de styles, le développeur pourra avoir deux approches :
- soit il traitera de styles créés spécialement pour le rapport qu’il est en train de créer (dans le menu ci-dessous correspond à « style »)
- soit pour une problématique d’uniformisation des styles des rapports, un template de style pourra être créé. (dans le menu ci-dessous correspond à « style reference »)
Cas pratique: avec la base de données sugarcrm fournit dans ireport community, créez un rapport avec la requête suivante :
« SELECT user_name, last_name, title FROM users »
Prenons dans un premier temps le cas du style simple :
Puis le cas d’un style conditionnel
Et voici le résultat
Comme nous l’avons mis plus haut afin d’uniformiser la pagination des rapports, iReport permet de créer des templates :
Outil >modeles>report>Style template
Si vous voulez plus de détails techniques, n’hésitez pas à aller voir dans JasperReports Ultimate Guide Third Edition p47
Exemple de styles créés dans le template (template.jrtx)
<?xml version= »1.0″ encoding= »UTF-8″?>
<!DOCTYPE jasperTemplate PUBLIC « -//JasperReports//DTD Template//EN » « http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd »>
<jasperTemplate>
<style name= »titre » isDefault= »false » mode= »Opaque » forecolor= »#FFFFFF » backcolor= »#003399″
scaleImage= »RetainShape » hAlign= »Center » vAlign= »Middle » rotation= »None » lineSpacing= »Single » markup= »styled »
fontSize= »10″ isBold= »false » isItalic= »false » isUnderline= »false » isStrikeThrough= »false »/>
<style name= »titre2″ isDefault= »false » mode= »Opaque » forecolor= »#003399″ backcolor= »#FFFFFF »
hAlign= »Center » vAlign= »Middle » rotation= »None » lineSpacing= »Single » markup= »styled » fontSize= »10″
isBold= »false » isItalic= »false » isUnderline= »false » isStrikeThrough= »false »/>
</jasperTemplate>
Dans le menu Fenêtre vous pourrez remarquer la présence d’une fenêtre appelée Styles Library.
Cette fenêtre permettrait de faire le lien avec ce fichier .jrtx (le template de style) présent sur le serveur : JasperServeur avec l’utilisation de ces styles en local.
En effet il faudrait juste copier-coller les styles créésdu template dans cette fenêtre pour avoir les styles en local lors de la création d’un nouveau rapport.
Si j’écris au conditionnel, c’est parce que cette fenêtre n’est pas encore utilisable en ces termes dans la version 3.6.0. D’après JasperSoft ce problème sera réglé dans la version 3.6.1. Soyons patients!
Voici donc une astuce pour voir les styles créés dans le template en local.
1) Insérer le template en faisant comme plus haut Style>Style reference en indiquant avec une adresse locale (du type : C:\montemplatedestyles.jrtx) le fichier que vous aurez créé au préalable en passant par le menu Outil > Modele >>report>Style template.
2) Ce fichier devra être aussi inséré dans JasperServer dans un dossier styles par exemple que vous aurez créé dans l’arborescence.
3) Lors de l’enregistrement du rapport sur le serveur il faudra remettre une adresse qui indiquera sa place dans le repository (du type : « repo: styles/montemplatedestyles.jrtx)
Et si ce rapport doit être repris par la suite en local avec iReport n’oubliez pas de jongler avec les deux types d’adresses :
- C:\montemplatedestyles.jrtx (où l’on aura accès au style pour faire du drag and drop en local)
- « repo: styles/montemplatedestyles.jrtx (ou lors de la compilation sur Jasperserver, ce dernier trouvera la référence à ces styles)
L’utilisation des styles peut vraiment améliorer le temps de création d’un rapport, alors pour plus de productivité, n’hésitez pas à créer vos templates !
17 août 2010 à 23 h 07 min
Merci beaucoup! C’est exactement se que je cherchais!
Bon début de matiné^^.
Cordialement,