IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

Exécution d'un rapport avec code java


Sujet :

Jasper

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Exécution d'un rapport avec code java
    Bonjour a tous je suis débutant dans l'utilisation de jasper report j'essaie depuis peux d'exécuter un rapport dans mon code java que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    package rapports;
    import java.io.File;
    import java.net.URL;
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JRParameter;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperPrintManager;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.export.JRXlsExporter;
    import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
    import net.sf.jasperreports.engine.util.JRLoader;
    import net.sf.jasperreports.view.JasperViewer;
     
    /**
     * Petite classe utilitaire pour lancer une impression d'un état JasperReport
     * On suppose que cette classe est placée avec les différents rapports dans le package "rapports".
     */
    public class ImprJasper {
        /**
         * @param nomDuRapport Le nom du rapport sans son extension .jasper
         * @param conn La connexion java.sql à la base de donnée
         * @param formatSortie "Aperçu","Imprimante","Tableur","HTML","PDF"
         * @param params Map des différents paramètres passés au rapport (ID_CLIENT par exemple) pour utilisation par le rapport
         * @param cheminFichierDeSortie chemin complet (avec extension) du fichier de sortie (HTML, Tableur, PDF). Indiquer null si Aperçu ou Imprimante
         */
        public ImprJasper(String nomDuRapport, Connection conn, String formatSortie, Map<String, Object> params, String cheminFichierDeSortie){
     
            params.put("SUBREPORT_DIR", "rapports/");       //  on suppose que le package dans lequel se trouve le rapport est nommé "rapports"
     
            URL cheminRapport = getClass().getResource(nomDuRapport + ".jasper");
     
            try {
                // chargement du rapport :
                JasperReport jasperReport = (JasperReport)JRLoader.loadObject(cheminRapport);
     
                // suppression de la pagination si format HTML (sinon on est au format A4 !!!)
                if (formatSortie.equals("HTML")) {
                    params.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
                }
     
                // calcul et mise en page du rapport avec utilisation des paramètres et de la connexion
                // l'objet jasperPrint contient le résultat
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);
     
                // si le format de sortie est "Aperçu", le résultat est placé dans un JFrame (JasperViewer) qui fait un EXIT_ON_CLOSE par défaut
                // il faut donc passer le paramètre false pour empêcher l'arrêt de l'application après un aperçu
                if (formatSortie.equals("Aperçu")) {
                    final JasperViewer Jv = new JasperViewer(jasperPrint,false); // le false empèche l'arrêt de l'application
                }
     
                if (formatSortie.equals("PDF")) {
                    JasperExportManager.exportReportToPdfFile(jasperPrint, cheminFichierDeSortie);
                }
     
                // pour exporter au format HTML JasperExportManager crée un sous répertoire.
                // en cas de ré-exportation du rapport, il faut supprimer le sous-répertoire sinon ça plante
                if (formatSortie.equals("HTML")) {
                    String NomRepHtml = cheminFichierDeSortie.subSequence(0, cheminFichierDeSortie.lastIndexOf(".")) + "_files";
                    File RepHtm = new File(NomRepHtml);
                    if (RepHtm.exists()) {
                        File[] Fichiers = RepHtm.listFiles();
                        for (File fichier : Fichiers) {
                            fichier.delete();
                        }
                    }
                    RepHtm.delete();
                    JasperExportManager.exportReportToHtmlFile(jasperPrint, cheminFichierDeSortie);
                }            
     
                if (formatSortie.equals("Imprimante")) JasperPrintManager.printReport(jasperPrint,false);
     
                if (formatSortie.equals("Tableur")) {
                    JRXlsExporter exporter = new JRXlsExporter();
     
                    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
                    exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, cheminFichierDeSortie);
                    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
     
                    exporter.exportReport();
     
                }
     
            }
     
            catch (JRException ex) {
                ex.printStackTrace();
            }
     
        }
     
     
        public void testImpression() throws SQLException {
     
            // exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
            String url = "jdbc:mysql://localhost/jasper_database";
            String login = "root";
            String password = "";
            Driver monDriver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(monDriver);
            Connection conn = (Connection) DriverManager.getConnection(url, login, password);   
            System.out.println("connexion");
           // Connection conn = .... ;      // la connexion à la base de données
            Map<String, Object> params =  new HashMap<String, Object>();
            params.put("id_equipement",123);
            new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
        }    
        public static void main(String []args) throws SQLException{
            // exemple de sortie au format PDF du rapport "interventions" au format PDF pour l'équipement N°123
            String url = "jdbc:mysql://localhost/jasper_database";
            String login = "root";
            String password = "";
            Driver monDriver = new com.mysql.jdbc.Driver();
            DriverManager.registerDriver(monDriver);
            Connection conn = (Connection) DriverManager.getConnection(url, login, password);   
            System.out.println("connexion");
           // Connection conn = .... ;      // la connexion à la base de données
            Map<String, Object> params =  new HashMap<String, Object>();
            params.put("titre","titre");
            new ImprJasper("report3", conn, "PDF", params, "d:/kika.pdf");
        }
    }
    voilà l'erreur que j'ai et je n'y comprend rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    connexion
    net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    	Source text : Nom
    	at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203)
    	at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
    	at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
    	at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:966)
    	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:447)
    	at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:431)
    	at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
    	at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:459)
    	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:457)
    	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnHeader(JRVerticalFiller.java:502)
    	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:284)
    	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151)
    	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909)
    	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
    	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
    	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
    	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
    	at rapports.ImprJasper.<init>(ImprJasper.java:52)
    	at rapports.ImprJasper.main(ImprJasper.java:128)
    Caused by: groovy.lang.MissingPropertyException: No such property: Nom for class: report3_1366055885290_141145
    	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
    	at org.codehaus.groovy.runtime.callsite.GetEffectivePogoPropertySite.getProperty(GetEffectivePogoPropertySite.java:86)
    	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:239)
    	at report3_1366055885290_141145.evaluate(calculator_report3_1366055885290_141145:167)
    	at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190)
    	... 18 more
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    désolé mais le problème réside au niveau du rapport car la requètte utilisé dans le tableau avec un problème
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bjr,

    J'ai une question, comment t'as fait pour voir el code java de ton rapport?
    mercii

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RCP] déplacer plugin avec code java
    Par chiraz86 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 25/04/2010, 10h55
  2. Ajout de .jar au build path avec code java
    Par chiraz86 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 12/04/2010, 13h36
  3. exécuter DOS à partir d'un code java
    Par soumti84 dans le forum Général Java
    Réponses: 3
    Dernier message: 14/03/2009, 19h27
  4. Réponses: 2
    Dernier message: 16/07/2007, 16h04
  5. insertion date dans access avec code java
    Par voyageur dans le forum Access
    Réponses: 3
    Dernier message: 20/06/2006, 21h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo