logo xml

JasperReports

Création manuelle de modèles : Base

Base du fichier XML

Pour mettre en forme les rapports, jasperReports utilise donc des fichiers XML que je vais vous présenter maintenant.

Dans un premier temps, il faut utiliser le schéma XML fournit par JasperReports et qui définit la structure du fichier XML :
http://jasperreports.sourceforge.net/xsd/jasperreport.xsd

La balise principale du fichier est la balise jasperReport à laquelle on donne différents attributs :

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport
xmlns="http://jasperreports.sourceforge.net/jasperreports" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
name="NomDuModeleDeRapport" 
pageWidth="555" 
pageHeight="800" 
columnWidth="555" 
leftMargin="0" 
rightMargin="0" 
topMargin="0" 
bottomMargin="0">
	...
	...
	...
</jasperReport>
			

Dans la balise jasperReport, on peut voir certains attributs :


Requête

Dans la suite du document XML, nous allons définir différents éléments, à la fois graphiques et non graphiques. Parmi les éléments non graphiques, il y a notamment la requête. Cet élément est indispensable dans le cadre de sources de données telles que des fichiers XML ou des bases de données. Pour définir la requête, on utilise la balise queryString :

<queryString language="SQL">
	<![CDATA[SELECT * FROM orders]]>
</queryString>
			

Comme vous pouvez le constater, il faut indiquer le langage de la requête et le texte de la requête est dans une section CDATA qui permet de faire en sorte que ce texte ne soit pas parsé. Dans cet exemple, nous sélectionnons l'ensemble des colonnes de la table orders.


Champs

Maintenant que la requête est définie, il s'agit de définir les champs que nous allons utiliser au sein du rapport et qui sont extraits depuis la source de données. Pour cela, nous utilisons la balise field :

<field name="ORDERID" class="java.lang.Integer"/>
			

La balise field possède deux attributs, name et class. Vous pouvez constater que dans notre exemple, l'attribut class possède un nom de classe Java (avec nom de packages). Cela n'est pas surprenant étant donné que JasperReport est développé en Java. De plus, nous verrons par la suite que le fait d'indiquer la classe du champs permet notamment d'utiliser les méthodes Java de cette classe au sein même d'un rapport !

Pour utiliser la valeur du champs au sein du rapport, il faut utiliser la syntaxe suivante (F pour Field) :

$F{ORDERID}
			

Paramètres

Les modèles de rapport contiennent des paramètres prédéfinis mais peuvent aussi en recevoir. Ci-dessous, une exemple de balise à insérer dans le fichier afin de définir un paramètre de votre choix :

<parameter name="parameter1" class="java.lang.String"/>
			

Il existe aussi des paramètres prédéfinis pour chaque rapport que vous n'avez pas besoin de déclarer mais que vous pouvez utiliser dans les rapports comme (liste non exhaustive) :

Pour utiliser la valeur du paramètre au sein du rapport, il faut utiliser la syntaxe suivante (P pour Parameter) :

$P{parameter1}
			

Variables

JasperReports permet l'utilisation de variables qui comme leur nom l'indique peuvent dépendre des champs de votre requête par exemple voir même des paramètres du rapport que nous venons de voir. Leur déclaration peut comprendre ces deux options notamment qui permettent de définir l'expression de la variable et une valeur par défaut :

<variable name="variable1" class="java.lang.Integer">
	<variableExpression><![CDATA[$F{ORDERID}+$F{ORDERID}]]></variableExpression>
	<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
			

Comme pour les requêtes, les expressions doivent être dans une section CDATA afin qu'elles ne soient pas parsées. Dans cet exemple, nous créeons une variable variable1 qui est de type Integer et nous lui donnons comme expression la somme de l'ORDERID de la commande (vous noterez le $F).


Dans cette partie, je vous ai montré comment définir et utiliser des éléments dits "non graphiques" puisqu'ils n'affichent rien et dans la partie qui suit, vous allez pouvoir afficher les différents éléments de vos rapports.


Suite >>>