Créer des graphiques

Auparavant, les utilisateurs devaient s'appuyer sur des scriptlets pour collecter les données du graphique et rendre le graphique en utilisant un élément d'image dans le modèle de rapport. JasperReports simplifie désormais les choses, car il a un support intégré pour les graphiques utilisant le nouveau composant de graphique.

À l'aide d'un nouveau composant de graphique, l'utilisateur doit appliquer uniquement les paramètres visuels et définir des expressions qui aideront à créer le jeu de données du graphique. JasperReports utilise JFreeChart comme bibliothèque de graphiques sous-jacente. Lors de la configuration d'un nouveau composant de graphique, les trois composants suivants sont impliqués:

  • Le composant graphique global.

  • Le jeu de données du graphique (qui regroupe les paramètres liés aux données du graphique).

  • Le tracé du graphique (qui regroupe les paramètres visuels liés à la façon dont les éléments du graphique sont rendus).

JasperReports prend actuellement en charge les types de graphiques suivants: Pie, Pie 3D, Bar, Bar 3D, XY Bar, Stacked Bar, Stacked Bar 3D, Line, XY Line, Area, XY Area, Stacked Area, Scatter, Bubble, Time Series, High -Low-Open-Close, chandelier, axes multiples, mètre, thermomètre et Gantt.

Propriétés du graphique

Les graphiques sont des éléments de rapport normaux, ils partagent donc certaines de leurs propriétés avec tous les autres éléments de rapport. Il existe un élément JRXML appelé <chart>, utilisé pour créer tout type de graphiques. Cet élément regroupe des paramètres spécifiques aux graphiques qui s'appliquent à tous les types de graphiques.

Sous-éléments du graphique

Les sous-éléments de l'élément <chart> sont -

  • <reportElement> - Ce sont des objets affichables tels que des textes statiques, des champs de texte, des images, des lignes et des rectangles que vous placez dans vos sections de modèle de rapport.

  • <Box> - Cet élément est utilisé pour entourer les graphiques d'une bordure personnalisable de chaque côté.

  • <chartTitle>- Cet élément sert à placer le titre du graphique. L' attribut position décide de la position du titre du graphique dans le rapport. Cet élément a des attributs -Position(Les valeurs peuvent être Top , Bottom , Left , Right . La valeur Deafult est Top ),color. <chartTitle> a font et titleExpression comme sous-éléments.

  • <chartSubtitle>- Cet élément sert à placer le sous-titre du graphique. Cet élément a l'attribut -color. <chartSubtitle> a font et subtitleExpression comme sous-éléments.

  • <chartLegend>- L'élément peut contrôler les propriétés liées à la police ainsi que la couleur du texte et la couleur d'arrière-plan de la légende du graphique à l'aide de cet élément. Cet élément a des attributs -textColor et backgroundColor.

  • <anchorNameExpression> - Cet élément crée la cible de l'ancre.

  • <hyperlinkReferenceExpression> - Cet élément contient une expression de rapport indiquant le nom de la ressource externe (généralement une URL).

  • <hyperlinkAnchorExpression> - L'hyperlien pointe vers une ancre dans une ressource externe.

  • <hyperlinkPageExpression> - Le lien hypertexte pointe vers une page du rapport actuel.

  • <hyperlinkTooltipExpression>- Cet élément contrôle l'info-bulle du lien hypertexte. Le type de l'expression doit être java.lang.String .

  • <hyperlinkParameter> - Cet élément lorsqu'il est présent génère un hyperlien final en fonction des valeurs des paramètres.

Attributs du graphique

Les attributs de l'élément <chart> disponibles pour tous les types de graphiques sont -

  • isShowLegend- Cet attribut est utilisé pour déterminer si une légende de graphique sera affichée sur le rapport. Les valeurs peuvent être vraies ou fausses . La valeur par défaut est true .

  • evaluationTime- Détermine quand l'expression du graphique sera évaluée. Les valeurs peuvent être Now , Report , Page , Column , Group , Band . La valeur par défaut est maintenant .

  • evaluationGroup- Cet attribut détermine le nom du groupe à utiliser pour évaluer les expressions du graphique. La valeur de cet attribut doit correspondre au nom du groupe que nous aimerions utiliser comme groupe d'évaluation du graphique.

  • hyperlinkType- Cet attribut peut contenir n'importe quelle valeur de texte. La valeur par défaut est Aucun . Cela signifie que ni les champs de texte ni les images ne représentent des hyperliens, même si les expressions d'hyperliens spéciales sont présentes.

  • hyperlinkTarget- Cet attribut permet de personnaliser le comportement du lien spécifié lorsque l'utilisateur clique dessus dans le visualiseur. Les valeurs peuvent être Self ou Blank . La valeur par défaut est Self .

  • bookmarkLevel- Cet attribut, lorsqu'il est défini sur un entier positif, génère des signets dans les rapports exportés au format PDF. La valeur par défaut est 0 .

  • customizerClass- C'est le nom d'une classe (facultatif) qui peut être utilisée pour personnaliser le graphique. La valeur de cet élément doit être une chaîne contenant le nom d'une classe de personnalisation.

Personnalisation du graphique

Comme mentionné ci-dessus, JasperReports utilise JFreeChart comme bibliothèque de graphiques sous-jacente. JFreeChart contient des fonctionnalités qui ne sont pas directement prises en charge par JasperReports. Nous pouvons tirer parti de ces fonctionnalités en fournissant une classe de personnalisation via l' attribut customizerClass dans l'élément <chart>. Une classe de personnalisation n'est rien, mais une implémentation de l' interface net.sf.jasperreports.engine.JRChartCustomizer . Le moyen le plus simple d'implémenter cette interface est d'étendre la classe net.sf.jasperreports.engine.JRAbstractChartCustomizer et d'avoir ainsi accès aux paramètres, champs et variables pour une personnalisation plus flexible des graphiques en fonction des données du rapport.

Ensembles de données de graphique

L'une des propriétés communes à tous les types de graphiques est <dataset> élément. Les ensembles de données de graphique aident à cartographier les données de rapport et à récupérer les données de graphique lors de l'exécution. Chaque type de graphique contient différents sous-éléments pour définir les expressions du graphique. Ces expressions définissent les données utilisées pour générer le graphique. Tous ces sous-éléments contiennent un élément <dataset> qui définit quand les expressions du graphique sont évaluées et réinitialisées.

Plusieurs types de jeux de données de graphique sont disponibles dans JasperReports car chaque type de graphique fonctionne avec certains jeux de données: Pie, Category, XY, Time Series, Time Period, XYZ et High-Low. Chacun de ces types de jeux de données implémente l' interface net.sf.jasperreports.engine.JRChartDataset qui définit les jeux de données de graphiques. Tous les jeux de données de graphique s'initialisent et s'incrémentent de la même manière; cependant, ils ne diffèrent que par le type de données ou de séries de données qu'ils mappent.

Propriétés du jeu de données

Le tableau ci-dessous résume les attributs de l'élément <dataset> -

Attribut La description Valeurs
resetType Cet attribut détermine quand la valeur de l'expression de graphique doit être réinitialisée. Aucun, rapport, page, colonne, groupe. La valeur par défaut estReport.
resetGroup Cet attribut détermine le nom du groupe auquel la valeur de l'expression de graphique est réinitialisée. La valeur de cet attribut doit correspondre au nom de tout groupe déclaré dans le modèle de rapport JRXML.
incrementType Cet attribut détermine quand recalculer la valeur de l'expression de graphique. Aucun, rapport, page, colonne, groupe. La valeur par défaut est"None".
incrementGroup Cet attribut détermine le nom du groupe dans lequel l'expression de graphique est recalculée. La valeur de cet attribut doit correspondre au nom d'un groupe déclaré dans le modèle de rapport JRXML.

Le tableau suivant résume les sous-éléments de l'élément <dataset> -

Sous-élément La description
<incrémentWhenExpression> La façon dont un jeu de données de graphique est incrémenté peut être personnalisée en filtrant les données indésirables grâce à l'utilisation de ce sous-élément.
<datasetRun> Il contient les informations requises pour instancier un sous-ensemble de données de rapport.

Types de jeux de données

Les types d'ensembles de données spécifiques sont expliqués ci-dessous -

Ensemble de données à secteurs

Un jeu de données à secteurs est caractérisé par les expressions suivantes -

  • <keyExpression> - représente les catégories qui constitueront les tranches du graphique à secteurs. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <valueExpression> - produit les valeurs qui correspondent à chaque catégorie / clé de l'ensemble de données. Les valeurs sont toujours des objets java.lang.Number.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque tranche du graphique à secteurs. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes d'élément du graphique à secteurs.

  • <sectionHyperlink> - définit les hyperliens associés aux sections à secteurs.

Jeu de données de catégorie

Un jeu de données de catégorie est caractérisé par l'élément <categorySeries>, qui contient -

  • <seriesExpression> - indique le nom de la série. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <categoryExpression> - renvoie le nom de la catégorie pour chaque valeur à l'intérieur de la série spécifiée par l'expression de série. Les catégories sont des objets java.lang.Comparable.

  • <valueExpression> - produit les valeurs qui correspondent à chaque catégorie de l'ensemble de données. Les valeurs sont toujours des objets java.lang.Number.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque élément du graphique. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes des éléments du graphique.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données XY

Un ensemble de données XY est caractérisé par l'élément <xySeries>, qui contient -

  • <seriesExpression> - indique le nom de la série. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <xValueExpression> - renvoie la valeur java.lang.Number représentant la valeur X de la paire (x, y) qui sera ajoutée à la série de données actuelle.

  • <yValueExpression> - renvoie la valeur java.lang.Number représentant la valeur Y de la paire (x, y) qui sera ajoutée à la série de données actuelle.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque élément du graphique. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes des éléments du graphique.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données XYZ

Un ensemble de données XYZ est caractérisé par l'élément <xyzSeries>, qui contient -

  • <seriesExpression> - indique le nom de la série. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <xValueExpression> - renvoie la valeur java.lang.Number représentant la valeur X de l'élément (x, y, z) qui sera ajoutée à la série de données actuelle.

  • <yValueExpression> - renvoie la valeur java.lang.Number représentant la valeur Y de l'élément (x, y, z) qui sera ajouté à la série de données actuelle.

  • <zValueExpression> - renvoie la valeur java.lang.Number représentant la valeur Z de l'élément (x, y, z) qui sera ajouté à la série de données actuelle.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque élément du graphique. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes des éléments du graphique.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données de séries temporelles

Un ensemble de données de séries chronologiques est caractérisé par l'attribut timePeriod et l'élément <timeSeries>. L'attribut timePeriod spécifie le type de la série de données dans l'ensemble de données. Les séries chronologiques peuvent contenir des valeurs numériques associées à des jours, des mois, des années ou d'autres périodes prédéfinies. Les valeurs possibles sont: Année, Trimestre, Mois, Semaine, Jour - il s'agit de la valeur par défaut, Heure, Minute, Seconde, Milliseconde.

L'élément <timeSeries> contient -

  • <seriesExpression> - indique le nom de la série. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <timePeriodExpression> - renvoie une valeur java.util.Date à partir de laquelle le moteur extraira la période correspondante en fonction de la valeur définie pour l'attribut timePeriod mentionné ci-dessus.

  • <valueExpression> - renvoie la valeur java.lang.Number à associer à la valeur de période correspondante lors de l'incrémentation de la série actuelle de l'ensemble de données.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque élément du graphique. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes des éléments du graphique.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données de période

Un ensemble de données de période est caractérisé par l'élément <timePeriodSeries>, qui contient -

  • <seriesExpression> - indique le nom de la série. Cette expression peut renvoyer n'importe quel objet java.lang.Comparable.

  • <startDateExpression> - spécifie le début de l'intervalle de dates auquel la valeur numérique sera associée lorsqu'elle est ajoutée à la série de périodes.

  • <endDateExpression> - spécifie la fin de l'intervalle de dates auquel la valeur numérique sera associée lorsqu'elle est ajoutée à la série de périodes.

  • <valueExpression> - renvoie la valeur java.lang.Number à associer à l'intervalle de dates actuel spécifié par les expressions de date de début et de date de fin.

  • <labelExpression> - si cette expression est manquante, le graphique affichera les étiquettes par défaut pour chaque élément du graphique. Utilisez cette expression, qui renvoie les valeurs java.lang.String, pour personnaliser les étiquettes des éléments du graphique.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données haut bas

Un jeu de données très bas est caractérisé par les expressions suivantes -

  • <seriesExpression> - actuellement, une seule série est prise en charge dans un graphique High-Low ou Candlestick. Cependant, cette seule série doit être identifiée par une valeur java.lang.Comparable renvoyée par cette expression et elle doit également être utilisée comme nom de série dans la légende du graphique.

  • <dateExpression> - renvoie la date à laquelle se réfère l'élément actuel (haut, bas, ouvert, fermé, volume).

  • <highExpression> - renvoie une valeur java.lang.Number, qui fera partie de l'élément de données ajouté à la série lorsque l'ensemble de données est incrémenté.

  • <lowExpression> - renvoie une valeur java.lang.Number, qui fera partie de l'élément de données ajouté à la série lorsque l'ensemble de données est incrémenté.

  • <openExpression> - renvoie une valeur java.lang.Number, qui fera partie de l'élément de données ajouté à la série lorsque l'ensemble de données est incrémenté.

  • <closeExpression> - renvoie une valeur java.lang.Number, qui fera partie de l'élément de données ajouté à la série lorsque l'ensemble de données est incrémenté.

  • <volumeExpression> - une expression numérique qui renvoie la valeur de volume à utiliser pour l'élément de données actuel. Il n'est utilisé que pour les graphiques en chandeliers.

  • <itemHyperlink> - définit les hyperliens associés aux éléments du graphique.

Ensemble de données de valeur

Il s'agit d'une implémentation de jeu de données de graphique spécial qui contient une valeur unique et est utilisée pour le rendu des graphiques Meter et Thermometer. La valeur est collectée à l'aide de l'expression <valueExpression>.

Graphiques

Un autre élément JRXML courant dans tous les types de graphiques est le <plot> élément. Cela nous permet de définir plusieurs caractéristiques du graphique comme l'orientation et la couleur d'arrière-plan. Les graphiques diffèrent en fonction du type de graphique.

Attribut de tracé

Le tableau ci-dessous résume les attributs de l'élément <plot> -

Attribut La description Valeurs
couleur de fond Cet attribut définit la couleur d'arrière-plan du graphique. Toute valeur hexadécimale à six chiffres est une valeur valide pour cet attribut. La valeur hexadécimale doit être précédée d'un #.
orientation Cet attribut définit l'orientation du graphique. Horizontal, Vertical La valeur par défaut est "Vertical"
fondAlpha Cet attribut définit la transparence de la couleur d'arrière-plan du graphique. Les valeurs valides pour cet attribut incluent tout nombre décimal compris entre 0 et 1 inclus. Plus le nombre est élevé, moins l'arrière-plan sera transparent. La valeur par défaut est "1".
premier planAlpha Cet attribut définit la transparence des couleurs de premier plan du graphique. Les valeurs valides pour cet attribut incluent tout nombre décimal compris entre 0 et 1 inclus. Plus le nombre est élevé, moins l'arrière-plan sera transparent. La valeur par défaut est "1".
labelRotation Cet attribut permet de faire pivoter les étiquettes de texte sur l'axe des x dans le sens horaire ou anti-horaire. Cet attribut s'applique uniquement aux graphiques pour lesquels l'axe des x n'est pas numérique ou n'affiche pas de dates. La valeur par défaut est "0,0".

L'élément <plot> a un sous-élément <seriesColor> dont les attributs sont: seriesOrder et color . Cet élément personnalise les couleurs des séries et leur position dans la séquence de couleurs.

Paramètres spécifiques pour les graphiques

  • piePlot - Il n'a pas de paramètres spécifiques

  • pie3DPlot- Contient l' attribut depthFactor , une valeur numérique comprise entre 0 et 1 qui représente la profondeur du graphique en pourcentage de la hauteur de la zone de traçage.

  • barPlot - On peut afficher ou masquer les étiquettes de graduation, les marques de graduation ou les étiquettes d'élément, et fournit des paramètres pour les deux axes.

  • bar3DPlot - Fournit les mêmes paramètres que le barPlot et génère un effet 3D à l'aide des attributs xOffset et yOffset.

  • linePlot - On peut afficher ou masquer les lignes reliant les points des éléments, afficher ou masquer les formes associées aux points des éléments et fournir des paramètres pour les deux axes.

  • scatterPlot - Semblable au linePlot, il peut afficher ou masquer les lignes reliant les points d'éléments, afficher ou masquer les formes associées aux points d'éléments et fournir des paramètres pour les deux axes.

  • areaPlot - Fournit des paramètres pour les deux axes.

  • bubblePlot - On peut définir les dimensions de la bulle en définissant l'attribut scaleType et fournir des paramètres pour les deux axes.

  • timeSeriesPlot - On peut afficher ou masquer les lignes reliant les points des éléments, afficher ou masquer les formes associées aux points des éléments et fournir des paramètres pour les deux axes.

  • highLowPlot - On peut afficher ou masquer les graduations ouvertes, afficher ou masquer les graduations fermées et fournir des paramètres pour les deux axes.

  • candlestickPlot - On peut afficher ou masquer le volume, et fournit des paramètres pour les deux axes.

  • meterPlot - Contient des paramètres spécifiques pour la forme du cadran, l'angle d'échelle, les unités de mesure, l'intervalle de graduation, la couleur du cadran, la couleur de l'aiguille, la couleur de la graduation, la police d'affichage des valeurs, le modèle de couleur et de format, la plage de données et les intervalles de mesure.

  • thermometerPlot - Contient des paramètres spécifiques pour l'emplacement de la valeur, la couleur du mercure, afficher / masquer les lignes de valeur, la police d'affichage des valeurs, le modèle de couleur et de format, la plage de données, la plage basse, la plage moyenne et la plage haute.

  • multiAxisChart - Contient des paramètres spécifiques pour l'axe inclus dans le tracé.

Types de graphiques

JasperReports offre une prise en charge intégrée de plusieurs types de graphiques. Ils sont listés ci-dessous -

  • pieChart - Une combinaison d'un jeu de données Pie et d'un graphique Pie.

  • pie3DChart - Regroupe un jeu de données Pie et un graphique Pie 3D.

  • barChart - Une combinaison de base d'un jeu de données de catégorie et d'un diagramme à barres.

  • bar3DChart - Enveloppe un jeu de données de catégorie et un graphique à barres 3D.

  • xyBarChart - Prend en charge les jeux de données de période, les jeux de données de séries chronologiques et les jeux de données XY, et utilise un diagramme à barres pour rendre l'axe et les éléments.

  • stackedBarChart - Utilise les données d'un jeu de données de catégorie et rend son contenu à l'aide d'un diagramme à barres.

  • stackedBar3DChart - Utilise les données d'un jeu de données de catégorie et rend son contenu à l'aide d'un tracé Bar 3D.

  • lineChart - Regroupe un jeu de données de catégorie et un graphique linéaire.

  • xyLineChart - Regroupe un jeu de données XY et un graphique linéaire.

  • areaChart - Les éléments d'un jeu de données de catégorie sont rendus à l'aide d'un graphique d'aire.

  • stackedAreaChart - Les éléments d'un jeu de données de catégorie sont rendus à l'aide d'un graphique d'aire.

  • xyAreaChart - Utilise les données d'un ensemble de données XY et les restitue via un tracé de zone.

  • scatterChart - Enveloppe un jeu de données XY avec un nuage de points.

  • bubbleChart - Combine un jeu de données XYZ avec un graphique à bulles.

  • timeSeriesChart - Regroupe un jeu de données de séries chronologiques et un graphique de séries chronologiques.

  • highLowChart - Une combinaison d'un jeu de données High-Low et d'un graphique High-Low.

  • candlestickChart - Utilise les données d'un jeu de données High-Low mais avec un tracé en chandelier spécial.

  • meterChart - Affiche une valeur unique d'un jeu de données Value sur un cadran, en utilisant les options de rendu d'un tracé Meter.

  • thermometerChart - Affiche la valeur unique dans un jeu de données Value à l'aide des options de rendu d'un tracé Thermomètre.

  • multiAxisChart - Contient plusieurs axes de plage, tous partageant un axe de domaine commun.

Exemple

Pour illustrer les graphiques, écrivons un nouveau modèle de rapport (jasper_report_template.jrxml). Ici, nous ajouterons le <barChart> à la section <pageHeader> et <pieChart> à la section <summary>. Nous afficherions dans des graphiques les notes obtenues pour chaque sujet. Enregistrez-le dans le répertoireC:\tools\jasperreports-5.0.1\test. Le contenu du fichier est indiqué ci-dessous -

<?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 = "jasper_report_template" pageWidth = "595" pageHeight = "860"
   columnWidth = "515" leftMargin = "40" rightMargin = "40"
   topMargin = "50" bottomMargin = "50">

   <field name = "subjectName" class = "java.lang.String"/>
   <field name = "marks" class = "java.lang.Integer"/>
   
   <variable name = "countNumber" class = "java.lang.Integer" calculation = "Count">
      <variableExpression>
         <![CDATA[Boolean.TRUE]]>
      </variableExpression>
   </variable>
   
   <background>
      <band splitType = "Stretch"/>
   </background>
   
   <title>
      <band height = "79" splitType = "Stretch"/>
   </title>
   
   <pageHeader>
      <band height = "200">
    
         <barChart>
            <chart evaluationTime = "Report">
               <reportElement x = "0" y = "0" width = "555" height = "200"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Bar Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
      
            <categoryDataset>
               <dataset incrementType = "None"/>
            
               <categorySeries>
                  <seriesExpression>
                     <![CDATA[$F{subjectName}]]>
                  </seriesExpression>
            
                  <categoryExpression>
                     <![CDATA[$F{subjectName}]]>
                  </categoryExpression>
            
                  <valueExpression>
                     <![CDATA[$F{marks}]]>
                  </valueExpression>

               </categorySeries>
            </categoryDataset>
      
            <barPlot isShowTickMarks = "false">
               <plot/>
            </barPlot>
         </barChart>
      
      </band>
   </pageHeader>
   
   <columnHeader>
      <band height = "20" splitType = "Stretch"/>
   </columnHeader>
   
   <detail>
      <band height = "20" splitType = "Stretch"/>
   </detail>
   
   <columnFooter>
      <band height = "20" splitType = "Stretch"/>
   </columnFooter>
   
   <pageFooter>
      <band height = "20" splitType = "Stretch"/>
   </pageFooter>
   
   <summary>
      <band height = "400" splitType = "Stretch">
      
         <pieChart>
            <chart evaluationTime = "Report">
               <reportElement x = "135" y = "0" width = "270" height = "300"/>
            
               <chartTitle>
                  <titleExpression>
                     <![CDATA["My First JR Pie Chart"]]>
                  </titleExpression>
               </chartTitle>
            </chart>
         
            <pieDataset>
               <dataset incrementType = "None"/>
               
               <keyExpression>
                  <![CDATA[$F{subjectName}]]>
               </keyExpression>
            
               <valueExpression>
                  <![CDATA[$F{marks}]]>
               </valueExpression>
            </pieDataset>
            
            <piePlot>
               <plot/>
               <itemLabel/>
            </piePlot>
         </pieChart>
      
      </band>
   </summary>
	
</jasperReport>

Les détails du fichier ci-dessus sont indiqués ci-dessous -

  • L'élément JRXML utilisé pour créer un graphique à barres est </barChart> dans le <pageHeader>. Il contient un sous-élément </chart>, qui contient un sous-élément <reportElement> définissant les dimensions et la position du graphique.

  • L'élément <dataset> dans un graphique à barres doit être placé entre les éléments JRXML <categoryDataset> et </categoryDataset>.

  • <categoryDataset> doit contenir un élément <categorySeries>. Cet élément définit quel élément de données les barres représenteront (noms de sujet, dans cet exemple).

  • <categoryDataset> doit également contenir un élément, qui définit la manière dont les données seront séparées en catégories pour comparaison. Ici, les données sont séparées par des noms de sujet.

  • L'élément <valueExpression> définit quelle expression est utilisée pour déterminer la valeur de chaque barre du graphique. Ici, nous utilisons des "marques".

  • Pour le graphique à secteurs, nous avons utilisé l'élément <pieChart> dans la section <summary>. Il contient un sous-élément </chart>.

  • Le sous-élément contient une expression de rapport indiquant ce qu'il faut utiliser comme clé dans le graphique. Ici, nous avons utilisé subjectName.

  • Le sous-élément contient une expression utilisée pour calculer la valeur de la clé. Ici, nous avons utilisé des marques.

Les codes java pour le remplissage des rapports restent inchangés. Le contenu du fichierC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\JasperReportFill.java sont comme indiqué ci-dessous -

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = 
         "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";

      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new 
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();

      try {
         JasperFillManager.fillReportToFile( sourceFileName,
            parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

Comme nous afficherions les notes obtenues pour chaque sujet, POJO doit être changé. Le fichierC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBean.java le contenu est indiqué ci-dessous -

package com.tutorialspoint;

public class DataBean {
   private String subjectName;
   private Integer marks;

   public String getSubjectName() {
      return subjectName;
   }

   public void setSubjectName(String subjectName) {
      this.subjectName = subjectName;
   }

   public Integer getMarks() {
      return marks;
   }

   public void setMarks(Integer marks) {
      this.marks = marks;
   }

}

Même le contenu du fichier C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint\DataBeanList.java doivent être mis à jour comme indiqué ci-dessous -

package com.tutorialspoint;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("English", 58));
      dataBeanList.add(produce("SocialStudies", 68));
      dataBeanList.add(produce("Maths", 38));
      dataBeanList.add(produce("Hindi", 88));
      dataBeanList.add(produce("Scince", 78));
      
      return dataBeanList;
   }

   /*
    * This method returns a DataBean object, with subjectName ,
    * and marks set in it.
    */
   private DataBean produce(String subjectName, Integer marks) {
      DataBean dataBean = new DataBean();

      dataBean.setSubjectName(subjectName);
      dataBean.setMarks(marks);

      return dataBean;
   }
}

Génération de rapports

Ensuite, compilons et exécutons les fichiers ci-dessus en utilisant notre processus de construction ANT normal. Le contenu du fichier build.xml (enregistré sous le répertoire C: \ tools \ jasperreports-5.0.1 \ test) est indiqué ci-dessous.

Le fichier d'importation - baseBuild.xml est extrait du chapitre Configuration de l'environnement et doit être placé dans le même répertoire que le build.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml" />
   
   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer to preview the 
      report stored in the .JRprint file.">
      
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
		
      <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
			
         <classpath refid = "classpath" />
      </jrc>
   </target>

</project>

Ensuite, ouvrons la fenêtre de ligne de commande et allons dans le répertoire où build.xml est placé. Enfin, exécutez la commandeant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport est la cible par défaut) comme suit -

C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml

clean-sample:
   [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
   [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint

compile:
   [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
   [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
   warning: 'includeantruntime' was not set, defaulting to bu
   [javac] Compiling 3 source files to C:\tools\jasperreports-5.0.1\test\classes

compilereportdesing:
   [jrc] Compiling 1 report design files.
   [jrc] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
   [jrc] log4j:WARN Please initialize the log4j system properly.
   [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig 
      for more info.
   [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.

run:
   [echo] Runnin class : com.tutorialspoint.JasperReportFill
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

viewFillReport:
   [java] log4j:WARN No appenders could be found for logger
   (net.sf.jasperreports.extensions.ExtensionsEnvironment).
   [java] log4j:WARN Please initialize the log4j system properly.

BUILD SUCCESSFUL
Total time: 19 minutes 45 seconds

À la suite de la compilation ci-dessus, une fenêtre JasperViewer s'ouvre comme dans l'écran ci-dessous -

Ici, nous voyons que le graphique à barres est créé dans l'en-tête de page et le graphique à secteurs est créé dans les sections de résumé.