IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Concepts de JasperReports/iReport > Mise en page
        Comment afficher pour chaque ligne son numéro de ligne ?
        Comment formater une date dans l'expression d'un champ textfield ?
        Comment générer un rapport avec Jasper Report dans un format exploitable par Open Office ?
        Comment cacher une bande au sein d'un rapport ?
        Comment personnaliser une case en fonction de son contenu ?
        Comment faire pour avoir un sous rapport avec une taille qui dépend du nombre des enregistrements qu'il contient ?
        Comment multiplier deux champs sur un rapport ?
        Comment choisir la lange d'un champ Date ?
        Comment insérer une image statique dans un état ?
        Comment empêcher la modification d'un fichier PDF généré par JasperReports à l'aide d'un autre outil ?
        Comment faire pour insérer un champs qui s'adapte à un contenu de taille variable ?
        Comment afficher une image sur toutes les pages à part la première page ?
        Comment créer un diagramme en baton horizontal avec iReport ?
        Comment créer une checkbox avec choix booléen ?
        Comment décaler dynamiquement un élément vers le bas ?
        Comment créer un lien hypertext dans un textfield ?
        Comment mettre toutes les données à la suite dans un export au format xls (ne pas avoir 1 page de pdf == 1 classeur sous excel) ?
        Comment afficher un montant formaté à 2 décimales selon la locale ?
        Comment éviter une ligne de totalisation orpheline dans un tableau de données XML multi-pages ?
        Comment personnaliser les formats de sauvegarde avec JRViewer?



Comment afficher pour chaque ligne son numéro de ligne ?
auteur : shuryyy
Il suffit d'utiliser la variable interne Report_count.


Comment formater une date dans l'expression d'un champ textfield ?
auteur : edno
Créer une variable de type java.text.SimpleDate.

<variable name="outFormatDate" class="java.text.SimpleDateFormat" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[new java.text.SimpleDateFormat("MMMMM yyyy")]]></variableExpression>
    <initialValueExpression><![CDATA[new java.text.SimpleDateFormat("MMMMM yyyy")]]></initialValueExpression>
</variable>
Utiliser la variable dans l'expression du textfield pour formater la date courante new java.util.Date() :

<textFieldExpression   class="java.lang.String"> 
    <![CDATA["Facturation mois " + $V{outFormatDate}.format(new java.util.Date()) ]]>
</textFieldExpression>
				   
Dans le cas d'une date issue d'une source de données $F{date}, il suffit de créer une variable identique pour effectuer le parsing (transformation en objet java.util.Date) :

<variable name="inFormatDate" class="java.text.SimpleDateFormat" resetType="Report" calculation="Nothing">
    <variableExpression><![CDATA[new java.text.SimpleDateFormat("dd/MM/yyyy")]]> </variableExpression>
    <initialValueExpression> <![CDATA[new java.text.SimpleDateFormat("dd/MM/yyyy")]]> </initialValueExpression>
</variable>
L'utilisation se fait de la même manière dans le textfield :

<textFieldExpression   class="java.lang.String"> 
    <![CDATA[$V{outFormatDate}.format($V{inFormatDate}.parse($F{date}))]]> 
</textFieldExpression>

Comment générer un rapport avec Jasper Report dans un format exploitable par Open Office ?
auteur : Faisel Chabli
L'export sera au format Odt (Open Office).
// Export au format Odt (Open Office)
JROdtExporter exporter = new JROdtExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
exporter .exportReport();

Comment cacher une bande au sein d'un rapport ?
auteur : Faisel Chabli
Cliquer droit sur la bande en question (détail, sommaire...), choisir Propriétés de bande et après mettre la valeur zéro dans la zone Hauteur de bande.


Comment personnaliser une case en fonction de son contenu ?
auteur : Gabriel.Entressangle
Pour personnaliser une case en fonction du contenu, une des méthodes possibles, et qui a ma préférence, est d'utiliser les styles conditionnels.

Un style est un ensemble de propriétés caractérisant des classes d'objets utilisées à l'intérieur d'un rapport. Un style conditionnel est un sous-ensemble d'un style conditionné par la valeur d'une expression logique : le style est appliqué si l'expression logique est "vraie". Prenons pour exemple le cas d'un TextField affichant le Field F1 dont on veut positionner la couleur de fond en fonction du contenu de F1 : Vert si le champ est positif ou nul et rouge sinon. On suppose que l'on utilise iReport NB.

On va donc commencer par définir un nouveau style "ST1" dans le rapport en allant tout en haut dans le Report Inspector et en cliquant droit sur Styles et choisissant Ajouter puis Style. On va dans Propriétés, on modifie le nom en mettant "ST1" et on positionne éventuellement des éléments de styles à appliquer à la case quel que soit le contenu.

Toujours dans le Report Inspector On clique droit sur le style ST1 et on fait Ajouter Conditional Style. On va dans Propriétés de ce nouveau style, on définit une condition :
new Boolean( ${F1}>=0)
Et on positionne la propriété Backcolor à une valeur de Vert grâce à la palette de couleur. On positionne éventuellement d'autres propriétés associées au fond vert.

On réitère le step précédent mais en définissant une condition :
new Boolean( ${F1}<0)
Et en positionnant une valeur de rouge pour la propriété Backcolor.

Ensuite on sélectionne le TextField concerné et on positionne sa propriété Style à ST1.

Lors de l'exécution, le TextField aura bien comme couleur de fond la couleur définie en fonction de son contenu.


Comment faire pour avoir un sous rapport avec une taille qui dépend du nombre des enregistrements qu'il contient ?
auteur : nannous
  • 1. Activer la bande NoData dans les propriétés du rapport et de mettre sa taille à zéro.
  • 2. Mettre tous les champs du sous rapport à remove line when blank
  • 3. Dans le rapport principal mettre la hauteur du sous rapport à 0

Comment multiplier deux champs sur un rapport ?
auteur : Faisel Chabli
Solution 1 : Faire cette multiplication dans la requête SQL (au cas où l'on utilise SQL).

Solution 2 : Créer une variable et mettre dans sa propriété Expression de variable :
 new java.lang.Integer(  ($F{Champ1}.intValue()) *($F{Champ2}.intValue()) )

Comment choisir la lange d'un champ Date ?
auteur : shuryyy
Il suffit d'ajouter dans la méthode le code :
Locale.setDefault( new Locale(taLangue) );

Comment insérer une image statique dans un état ?
auteur : Faisel Chabli
Insérer un objet de type Image dans le rapport. Cliquer droit sur cet objet inséré et choisir propriétés --> Onglet Image --> Cliquer sur Rechercher... et sélectionner votre image.


Comment empêcher la modification d'un fichier PDF généré par JasperReports à l'aide d'un autre outil ?
auteur : Faisel Chabli
Procéder comme suit :
File destFile = new File(nomFichier);
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
......
exporter.setParameter(
JRPdfExporterParameter.PERMISSIONS, 
new Integer(PdfWriter.AllowCopy | PdfWriter.AllowPrinting|PdfWriter.AllowScreenReaders)
                );
exporter.exportReport();

Comment faire pour insérer un champs qui s'adapte à un contenu de taille variable ?
auteur : Faisel Chabli
Cocher la propriété Stretch With Overflow du Text Field.


Comment afficher une image sur toutes les pages à part la première page ?
auteur : Faisel Chabli
Il suffit de mettre dans la propriété imprimer si expression (print when expression) de l'image le code suivant :
new Boolean(($V{PAGE_NUMBER}.intValue()!=1) ? true : false )

Comment créer un diagramme en baton horizontal avec iReport ?
auteur : jmini
La syntaxe XML du (jrxml) : Il faut utiliser l'attribut orientation de la balise plot dans la balise <b><barPlot></b>
<barPlot>
     <plot orientation="Horizontal"/>
     ....
</barPlot>
Avec l'éditeur graphique : Dans la palette Properties du chart, il y a une section Common chart properties (la deuxième) et Orientation est la dernière propriété. => Les choix sont Vertical ou Horizontal.
<barPlot>
     <plot orientation="Horizontal"/>
     ....
</barPlot>

Comment créer une checkbox avec choix booléen ?
auteur : ALLODREN
En cliquant sur la checkbox, cela ajoute une valeur, une condition dans la requête principale, si on ne clique pas cela n'ajoute rien.

Exemple dans le cas où l'on souhaite afficher dans un report des commandes annulées ou ne pas les afficher :

Etape 1: Création du Paramètre St_Com_Bool :

Créer un paramètre nommé St_Com_Bool et l'identifier comme un type Boolean. Ce paramètre servira de lien entre l'input control et la requête.

Etape 2: Création du Paramètre St_Com :

Créer un paramètre nommé St_Com et l'identifier comme un type String. Implanter comme valeur d'expression par défaut :
(P${St_Com_Bool}==true ? Where Statut_Commmande like "annulée","")
Etape 3 : Dans la Requête :

Ecrire dans la requête principale un paramètre tel que :
Select * from matable $P!{St_Com}
Etape 4 : Dans l'input control :

Créer un input control de type boolean qui porte le même non que le paramètre booléan : St_Com_Bool.


Comment décaler dynamiquement un élément vers le bas ?
auteur : Faisel Chabli
Il faut mettre la propriété Position Type à Float.



Comment mettre toutes les données à la suite dans un export au format xls (ne pas avoir 1 page de pdf == 1 classeur sous excel) ?
auteur : Faisel Chabli
Il suffit de mettre
isIgnorePagination="true"
dans la balise ouvrante <b><jasperreport></b> du jrxml.


Comment afficher un montant formaté à 2 décimales selon la locale ?
auteur : Faisel Chabli
Il suffit d'implémenter un BigDecimal avec son BigDecimalFormatSymbols associé selon la locale :

Format Français :
new DecimalFormat("#,##0.00",new DecimalFormatSymbols(Locale.FRENCH)).format($F{DEVIS_MT})
Format Anglais :
new DecimalFormat("#,##0.00",new DecimalFormatSymbols(Locale.ENGLISH)).format($F{DEVIS_MT})

Comment éviter une ligne de totalisation orpheline dans un tableau de données XML multi-pages ?
auteur : Alaster
-> Il faut compter le nombre de lignes affichables dans le tableau (en 1ère page et suivantes) et imprimer un saut de page avant d'imprimer une ligne s'il n'y a pas de la place pour afficher la ligne totale dans le tableau :

-> Le saut de page est placé avant la définition d'une ligne de mon tableau (haut 0 ; la ligne commençant en haut 1)
// Code de la zone "imprimer si expression" de l'objet saut_de_page

($V{REPORT_COUNT}.intValue() == $P{NB_TAB_LINE_PAGE_1}.intValue() ? Boolean.TRUE : 
  (($V{REPORT_COUNT}.intValue()-$P{NB_TAB_LINE_PAGE_1}.intValue()) % $P{NB_TAB_LINE_PAGE_2}.intValue() == 0 ? Boolean.TRUE : Boolean.FALSE
  )
)
Ci-dessus :

  • $V{RECORD_COUNT} : Le Nombre d'impression actuelle de la ligne du tableau
  • $P{NB_TAB_LINE_PAGE_1} : Le nombre de ligne imprimable sur la première page où apparaît mon tableau (laissant la place de la ligne total)
  • $P{NB_TAB_LINE_PAGE_2} : Le nombre de ligne imprimable sur les pages suivantes où apparaît mon tableau (laissant la place de la ligne total)

Comment personnaliser les formats de sauvegarde avec JRViewer?
auteur : baxou087
Dans un premier temps, il faut étendre la classe JRviewer de la facon suivante
public class NeoJRViewer extends JRViewer {
 
    JasperPrint jasperPrint ;
 
    public NeoJRViewer(JasperPrint jp) {
        super(jp) ;
    }
 
// ON REECRIT LA METHODE initSaveContributors EN COMMENTANT
// LES FORMATS DE SAUVEGARDE QUE L'ON NE VEUT PAS GARDER
 
    @Override
    protected void initSaveContributors() {
        final String[] DEFAULT_CONTRIBUTORS = {
//        "net.sf.jasperreports.view.save.JRPrintSaveContributor",
        "net.sf.jasperreports.view.save.JRPdfSaveContributor"
//        "net.sf.jasperreports.view.save.JRRtfSaveContributor",
//        "net.sf.jasperreports.view.save.JROdtSaveContributor",
//        "net.sf.jasperreports.view.save.JRHtmlSaveContributor",
//        "net.sf.jasperreports.view.save.JRSingleSheetXlsSaveContributor",
//        "net.sf.jasperreports.view.save.JRMultipleSheetsXlsSaveContributor",
//        "net.sf.jasperreports.view.save.JRCsvSaveContributor",
//        "net.sf.jasperreports.view.save.JRXmlSaveContributor",
//        "net.sf.jasperreports.view.save.JREmbeddedImagesXmlSaveContributor"
        };
 
 
// CE BOUT DE CODE PERMET D'INITIALISER LA VARIABLE saveContributors
// CONTENUE DANS JRViewer
        for(int i=0; i<DEFAULT_CONTRIBUTORS.length; i++) {
            try {
            Class saveContribClass = JRClassLoader.loadClassForName(DEFAULT_CONTRIBUTORS[i]) ;
            Constructor constructor = saveContribClass.getConstructor(new Class[]{Locale.class, ResourceBundle.class}) ;
            JRSaveContributor saveContrib = (JRSaveContributor)constructor.newInstance(new Object[]{getLocale(), null}) ;
            saveContributors.add(saveContrib) ;
            } catch (Exception e) {
                System.err.println(e) ;
            }
        }
    }
}
Une fois ceci fait, on crée une nouvelle JFrame dans laquelle on rajoute NeoJRViewer grâce a une méthode du genre :
public void viewReport(JasperPrint jasperPrint) {
         this.viewer = new NeoJRViewer(jasperPrint) ;
         this.getContentPane().setLayout(new BorderLayout()) ;
         this.getContentPane().add(viewer) ;
}


Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.