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 :

generation de rapport DOC en java


Sujet :

Jasper

  1. #1
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut generation de rapport DOC en java
    salut,

    je fais quelque lecture sur le net je trouve que le Jasper Reports génère de document de type PDF pour moi je veux génère de document de type DOC. comment fais? que est ce que j'utilise?

    Merci

  2. #2
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 293
    Points : 440
    Points
    440
    Par défaut
    Bonjour,
    J'utilise jasperserver pour lancer mes rapports jasper et il y a dedans des outils d'export vers divers formats dont rtf (donc doc).
    Il doit y avoir certainement des moyens plus directs pour obtenir celà mais je ne suis pas un champion de l'utilisation fine de JasperReport.
    Au fil de ce que je lis dans les forums, je crois comprendre qu'en utilisant également l'interface Web Services de jasperserver, tu peux lancer l'édition d'un rapport depuis un client et tu dois pouvoir préciser quel format de sortie tu désires (html,pdf,rtf,excel,...)
    Espérant t'avoir été utile ...

  3. #3
    Membre régulier
    Profil pro
    Président
    Inscrit en
    Novembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Président

    Informations forums :
    Inscription : Novembre 2006
    Messages : 100
    Points : 102
    Points
    102
    Par défaut
    Merci de ta réponse ,
    je ne trouve pas la méthode qui peux me génère un document de type word (.doc).

    D'autre part je utilise un toturial sur la site www.developpez.com. mais il me return un erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JasperReport jasperReport = JasperCompileManage.compileReport(jasperDesign);
    y a t'il quelque me donne un autre toturial pour démarrer par une 1er exemple.

  4. #4
    Membre averti

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2007
    Messages : 293
    Points : 440
    Points
    440
    Par défaut
    Je n'appelle pas les rapports à partir de Java mais de jasperserver, alorrs je ne peux t'aider plus car je ne connais pas trop. Par contre, ne te focalise pas trop sur le .doc : si tu trouves une méthode qui te donnes du .rtf je pense que ca sera équivalent puisque word sait lire du .rtf

  5. #5
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Primo essaie de ne pas passer par une compilation, tu dois utiliser directement par le fichier jasper au lieu de passer par une compilation du fichier jrxml car ça risque de dégrader les temps de réponses, certaines me diront que cel se fait dans unlaps de temps très court mais bon...tant que tu as ton fichier jasper (sinon tu le génere avec iReport) tu l'utilises.

    pour la génération en .doc voici ton bonheur :

    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
     
    public String viewReportWord() throws SQLException, JRException, IOException {
      String reportId = "Person";
      Driver mDriver = new Driver();
      DriverManager.registerDriver(mDriver);
      Connection connection = DriverManager.getConnection(
        Constants.DRIVER_DATABASE_MYSQL,
        Constants.LOGIN_DATABASE_MYSQL,
        Constants.PASSWORD_DATABASE_MYSQL);
      File file = new File(Constants.PATH_OF_REPORTS_JASPER);
      JasperPrint jasperPrint = JasperFillManager.fillReport(
        new FileInputStream(new File(file, reportId + ".jasper")),
        null, connection);
      FacesContext context = FacesContext.getCurrentInstance();
      HttpServletResponse response = (HttpServletResponse) context
        .getExternalContext().getResponse();
      if (jasperPrint != null) {
       ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
     
     
       JRRtfExporter exporter = new JRRtfExporter();
     
       exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT,
         jasperPrint);
       exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM,
         xlsReport);
       exporter.exportReport();
       // Send response
       byte[] bytes = xlsReport.toByteArray();
       /*******************************************************************
        * Pour afficher une boîte de dialogue pour enregistrer le fichier
        * sous le nom rapport.xls
        ******************************************************************/
       response.addHeader("Content-disposition",
         "attachment;filename=rapport.doc");
       //response.setContentType("application/vnd.ms-excel");
       response.setContentType("applicatoin/ms-word"); 
       response.setContentLength(bytes.length);
       response.getOutputStream().write(bytes, 0, bytes.length);
       response.getOutputStream().flush();
       response.getOutputStream().close();
      } else {
       Writer writer = response.getWriter();
       writer.write("Aucun rapport à afficher");
       response.setContentType("text/HTML");
      }
      return null;
    }
    ce code est testé et ça marche nickel.


    Citation Envoyé par sakli Voir le message
    Merci de ta réponse ,
    je ne trouve pas la méthode qui peux me génère un document de type word (.doc).

    D'autre part je utilise un toturial sur la site www.developpez.com. mais il me return un erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JasperReport jasperReport = JasperCompileManage.compileReport(jasperDesign);
    y a t'il quelque me donne un autre toturial pour démarrer par une 1er exemple.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    juste une question "stupide"
    ce code je le mets dans quoi
    public String viewReportWord() ...

  7. #7
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    C'est une méthode que tu dois mettre dans ta classe Java qui exécute ton rapport.

    Citation Envoyé par lediz Voir le message
    juste une question "stupide"
    ce code je le mets dans quoi

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    Bonjour,
    J'arrive presque à "compiler" le code ci-dessus "viewReportWord() "dans Eclispe,mais j'ai un problème à cette ligne :
    -->c'est souligne en rouge, donc pas "reconnu"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FacesContext context = FacesContext.getCurrentInstance();
    quel "Import" dois-je faire dans mon projet pour qu'il le reconnaisse ?
    Meci pour votre aide

  9. #9
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Tu n'as qu'à télécharger une implémentation JSF (SUN RI par exemple) et importer tous les JARs
    Dans ton cas probablement c'est le jsf-impl.jar ou jsf-api.jar qui manque !

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    je ne crois pas ...

    j'ai copié ces 2 "ja" (jsf-impl.jar ou jsf-api.jar) dans mon répertoire lib

    Ensuite au niveau du projet :

    - Ces 2 nouveaux fichiers apparaissent bien dans la liste
    - Ensuite "Add Jar's"

    Mais la ligne de code reste tj en erreur !

    NB : je n'ai peut-être pas les bonnes versions !

    J'ai aussi vu que certains utilisaient cells-ci :

    - myfaces-api-1.2.5.jar
    - myfaces-impl-1.2.5.jar

    mais je n'arrive pas à les télécharger..

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut JAVA (Jasper)chargement du fichier Excel
    bonjour,
    j'arrive bien à créer le fichier XLS sur le serveur
    Par contre je n'arrive pas à le télécharger correctement
    En fait, il ouvre un fichier excel, mais qui n'est celui qu'il vient de créer !
    Car à l'ouverture , il remplace les "\\" par des "__"

    il m'ouvre donc un fichier(vide) avec ce nom :
    "C__Program_Files_Apache_Software_Foundation_Tomcat_5.5_webapps_PRJTOMCAT5_reports_xls_out_xls[2].xls"
    Alors qu 'il vient de générer et de créer un rapport excel, ici :
    C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\PRJTOMCAT5\reports\xls\out_xls.xls
    L'idéal, bien entendu,
    serait qu'il ne créée pas de fichier "xls" sur le seveur et qu'il propose
    le popup directement "OUVRIR/ENREGISTRER".
    Comme on arrive à le faire avec un rapport généré en PDF
    REM:car dans ce cas,il ouvre directement PDF dans Iexplorer(mais le méthode est différente !)

    voici le code de ma servlet pour générer un rapport en Excel :
    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
     
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
     
    import net.sf.jasperreports.engine.export.JRRtfExporter;
    import net.sf.jasperreports.engine.export.JRXlsExporter;
    import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
    import java.io.File;
     
     
    public	class GenerateServletXLS extends HttpServlet 
    	{
    	  public void doGet(HttpServletRequest request,
    	                    HttpServletResponse response)
    	      throws ServletException, IOException 
    	      {
    			System.out.println("PRJTOMCAT5.GenerateServletXLS.doGET[access/xls]:1") ;
    		    String login = "administrateur"; String password = "";
    		    Connection con =null; 
    		    //
    		    try 
    		    {
    		    	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    		    } 
    		    catch(java.lang.ClassNotFoundException e) 
    		    {
    		    	System.err.print("ClassNotFoundException (try): ");
    		    	System.err.println(e.getMessage());
    		    }
    		    String dataSourceName = "CompressMDB";
    		   	String url = "jdbc:odbc:" + dataSourceName;
    		   	//
    		   	try  
    		   	{
    		   		con = DriverManager.getConnection(url,login,password) ;
    				}
    		    	catch(SQLException sqle) 
    				{
    		    	System.err.println(sqle.getMessage());
    		    }
    	            try 
    	            {
    	            	JasperDesign jasperDesign = JRXmlLoader.load("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\sources\\report1.jrxml");
    	     	        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    	                Map parameters = new HashMap();
    	                parameters.put("Titre", "Titre");
    	                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,con );
    	                String File_dest="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\xls\\out_xls.xls";
    	                File destFile =new File(File_dest);
    	                //JRXlsExporter exporter = new JRXlsExporter();
    	                JRRtfExporter exporter = new JRRtfExporter();
    	                exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT,jasperPrint);
    	                exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,destFile.toString());
    	                exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.TRUE);
    	                exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
    	                exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE);
    	                exporter.exportReport(); 
     
    	                 if (jasperPrint != null) {
     
    	                 ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
    	                 byte[] bytes = xlsReport.toByteArray();
    	                 /*******************************************************************
                              * Pour afficher une boîte de dialogue pour enregistrer le fichier
                              * sous le nom rapport.xls
                              ******************************************************************/
    	                 response.addHeader("Content-disposition",
    	                   "attachment;filename="+destFile.toString());
    	                 response.setContentType("application/vnd.ms-excel");
    	                 response.setContentLength(bytes.length);
    	                 response.getOutputStream().write(bytes, 0, bytes.length);
    	                 response.getOutputStream().flush();
    	                 response.getOutputStream().close();
    	                } 
    	                 else 
    	                {
    	                 Writer writer = response.getWriter();
    	                 writer.write("Aucun rapport à afficher");
    	                 response.setContentType("text/HTML");
    	                }
    	            } catch (JRException e) 
    	            {
     
    	                        e.printStackTrace();
    	            } finally {
    	                try {
    	                     con.close();
    	                    } catch (SQLException e) {
     
    	                            e.printStackTrace();
    	                    }
    	            }
     
    	     }
    	}

  12. #12
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Je vois que tu as utilisé mon tuto pour la génération de ton fichier Excel. Toutefois, tu as utilisé des trucs que moi j'ai pas utilisé alors que tu demandes le même résultat que le mien
    Dans mon cas, lors de la génération du fichier Excel, j'ai bien une boîte OUVRIR/ENREGISTRER et le fichier Excel est correctement généré.
    Dans ton code tu as ajouté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String File_dest="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\xls\\out_xls.xls";
                        File destFile =new File(File_dest);
    Pourquoi faire ?
    et après tu fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    response.addHeader("Content-disposition",
                           "attachment;filename="+destFile.toString());
    !!
    La variable destFile ne doit servir que pour donner un nom au fichier généré et non pas faire référence à l'emplacement du fichier généré !
    Essaie tout court ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    response.addHeader("Content-disposition",
                           "attachment;filename=unTestExcel.xls");
    Et tu enlèves ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String File_dest="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\xls\\out_xls.xls";
                        File destFile =new File(File_dest);
    Tiens nous au courant
    Citation Envoyé par lediz Voir le message
    bonjour,
    j'arrive bien à créer le fichier XLS sur le serveur
    Par contre je n'arrive pas à le télécharger correctement
    En fait, il ouvre un fichier excel, mais qui n'est celui qu'il vient de créer !
    Car à l'ouverture , il remplace les "\\" par des "__"

    il m'ouvre donc un fichier(vide) avec ce nom :

    Alors qu 'il vient de générer et de créer un rapport excel, ici :


    L'idéal, bien entendu,
    serait qu'il ne créée pas de fichier "xls" sur le seveur et qu'il propose
    le popup directement "OUVRIR/ENREGISTRER".
    Comme on arrive à le faire avec un rapport généré en PDF
    REM:car dans ce cas,il ouvre directement PDF dans Iexplorer(mais le méthode est différente !)

    voici le code de ma servlet pour générer un rapport en Excel :
    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
     
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.Writer;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.HashMap;
    import java.util.Map;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.design.JasperDesign;
    import net.sf.jasperreports.engine.xml.JRXmlLoader;
     
    import net.sf.jasperreports.engine.export.JRRtfExporter;
    import net.sf.jasperreports.engine.export.JRXlsExporter;
    import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
    import java.io.File;
     
     
    public    class GenerateServletXLS extends HttpServlet 
        {
          public void doGet(HttpServletRequest request,
                            HttpServletResponse response)
              throws ServletException, IOException 
              {
                System.out.println("PRJTOMCAT5.GenerateServletXLS.doGET[access/xls]:1") ;
                String login = "administrateur"; String password = "";
                Connection con =null; 
                //
                try 
                {
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                } 
                catch(java.lang.ClassNotFoundException e) 
                {
                    System.err.print("ClassNotFoundException (try): ");
                    System.err.println(e.getMessage());
                }
                String dataSourceName = "CompressMDB";
                   String url = "jdbc:odbc:" + dataSourceName;
                   //
                   try  
                   {
                       con = DriverManager.getConnection(url,login,password) ;
                    }
                    catch(SQLException sqle) 
                    {
                    System.err.println(sqle.getMessage());
                }
                    try 
                    {
                        JasperDesign jasperDesign = JRXmlLoader.load("C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\sources\\report1.jrxml");
                         JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
                        Map parameters = new HashMap();
                        parameters.put("Titre", "Titre");
                        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,con );
                        String File_dest="C:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\PRJTOMCAT5\\reports\\xls\\out_xls.xls";
                        File destFile =new File(File_dest);
                        //JRXlsExporter exporter = new JRXlsExporter();
                        JRRtfExporter exporter = new JRRtfExporter();
                        exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT,jasperPrint);
                        exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,destFile.toString());
                        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.TRUE);
                        exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
                        exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE);
                        exporter.exportReport(); 
     
                         if (jasperPrint != null) {
     
                         ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
                         byte[] bytes = xlsReport.toByteArray();
                         /*******************************************************************
                          * Pour afficher une boîte de dialogue pour enregistrer le fichier
                          * sous le nom rapport.xls
                          ******************************************************************/
                         response.addHeader("Content-disposition",
                           "attachment;filename="+destFile.toString());
                         response.setContentType("application/vnd.ms-excel");
                         response.setContentLength(bytes.length);
                         response.getOutputStream().write(bytes, 0, bytes.length);
                         response.getOutputStream().flush();
                         response.getOutputStream().close();
                        } 
                         else 
                        {
                         Writer writer = response.getWriter();
                         writer.write("Aucun rapport à afficher");
                         response.setContentType("text/HTML");
                        }
                    } catch (JRException e) 
                    {
     
                                e.printStackTrace();
                    } finally {
                        try {
                             con.close();
                            } catch (SQLException e) {
     
                                    e.printStackTrace();
                            }
                    }
     
             }
        }

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    Ok,merci,

    Voici mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .....
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,con );
    response.addHeader("Content-disposition","attachment;filename=newfile.xls");
    .....
    JRExporter exporter = new JRXlsExporter();
    exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,????????);
    ........
    J'ai bien le popup qui me demande OUVRIR/ENREGISTRER avec le fichier "newfile.xls"

    MAIS MON FICHIER EST VIDE

    Il ne fait pas le lien avec le contenu qu'il doit générer

    Et maintenant,Que dois-je mettre au niveau de ce paramètre "JRXlsExporterParameter.OUTPUT_FILE_NAME" ?
    REM : Peut-être que cela n'a rien avoir !

    Merci

  14. #14
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Je n'utilise pas le JRXlsExporterParameter.OUTPUT_FILE_NAME, donc toi aussi tu n'en as rien à faire
    Sinon pour le fichier VIDE, il faut s'assurer qu'au niveau de iReport le même fichier Jasper s'exécute correctement et te ramène le bon résultat.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    Tout à fait,
    si je retire cete ligne de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.addHeader("Content-disposition","attachment;filename=newfile.xls");
    et que je renseigne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,"testfilesrv.xls");
    Il me génère bien mon "testfilesrv.xls" sur le serveur
    Et ce fichier est correct, il contient bien mes données...

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    j'ai vu que dans ton article sur JSF ici que tu utilisait "FacesContext",
    je l'ai donc ajouté à mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...	             
    FacesContext context = FacesContext.getCurrentInstance();
    response=(HttpServletResponse) context.getExternalContext().getResponse();
    response.addHeader("Content-disposition","attachment;filename=t1.xls");
    ...
    j'ai maintenant ceci comme erreur au lancement de ma page
    exception
    java.lang.NullPointerException
    GenerateServletXLS.doGet(GenerateServletXLS.java:91)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    la ligne 91 =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response = (HttpServletResponse) context.getExternalContext().getResponse();
    Pour info, ci-dessous la déclaration de ma Servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public	class GenerateServletXLS extends HttpServlet 
    	{
    	  public void doGet(HttpServletRequest request,
    	                    HttpServletResponse response)
    	      throws ServletException, IOException 
    	      {
    ...
    Merci pour votre aide

  17. #17
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    As-tu essaié d'enlever le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,"testfilesrv.xls");
    et laisser le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.addHeader("Content-disposition","attachment;filename=newfile.xls");
    ?
    Citation Envoyé par lediz Voir le message
    Tout à fait,
    si je retire cete ligne de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.addHeader("Content-disposition","attachment;filename=newfile.xls");
    et que je renseigne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE_NAME,"testfilesrv.xls");
    Il me génère bien mon "testfilesrv.xls" sur le serveur
    Et ce fichier est correct, il contient bien mes données...

  18. #18
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Tu utilises JSF ?
    Citation Envoyé par lediz Voir le message
    j'ai vu que dans ton article sur JSF ici que tu utilisait "FacesContext",
    je l'ai donc ajouté à mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...                 
    FacesContext context = FacesContext.getCurrentInstance();
    response=(HttpServletResponse) context.getExternalContext().getResponse();
    response.addHeader("Content-disposition","attachment;filename=t1.xls");
    ...
    j'ai maintenant ceci comme erreur au lancement de ma page

    la ligne 91 =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response = (HttpServletResponse) context.getExternalContext().getResponse();
    Pour info, ci-dessous la déclaration de ma Servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public    class GenerateServletXLS extends HttpServlet 
        {
          public void doGet(HttpServletRequest request,
                            HttpServletResponse response)
              throws ServletException, IOException 
              {
    ...
    Merci pour votre aide

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    Normalement non,
    mais j'essaye par tout les moyen d'arriver à mes fins !
    Et comme je suis débutant en JAVA....
    Et malgré tout je suis tj bloqué ......

    Encore une chose,
    au préalable j'avais programmé un rapport en PDF
    et là tout est OK, il m'ouvre bien le popup, et le Rapport est correct

    voici le code utilisé pour le PDF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, con);
    byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
    response.setContentLength(bytes.length);response.getOutputStream().write(bytes);response.setContentType("application/pdf");
    Mais cette "méthode", je n'arrive pas à l'implémenter de cette manière pour mon fichier Excel.
    Normal : pas de "JasperExportManager.exportReportToPdf(jasperPrint)" pour Excel.

    Merci pour ton aide.

  20. #20
    Membre éprouvé

    Inscrit en
    Janvier 2009
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 467
    Points : 1 253
    Points
    1 253
    Billets dans le blog
    2
    Par défaut
    Dans la doc (Javadoc de JasperReport en l'occurence), on peut voir que JasperExportManager (ligne 2 de ton code) ne propose pas de methode XLS.
    Façade class for exporting generated reports into more popular formats such as PDF, HTML and XML. This class contains convenience methods for exporting to only these 3 formats.
    Il faut visiblement se tourner vers JRXlsExporter pour faire du XLS.

    Peut être qu'en s'inspirant du code de la fonction JasperExportManager.exportReportToPdf, il n'y a pas trop de modification a faire (mais je spécule)

Discussions similaires

  1. lire et ecrire dans un fichier.doc en java
    Par devamine dans le forum Documents
    Réponses: 8
    Dernier message: 08/07/2008, 08h12
  2. Convertir un .xml en .doc en java?
    Par Icefire dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 29/01/2008, 21h30
  3. generation de rapport
    Par anisj1m dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 10/09/2007, 11h43
  4. [2.1.2] Rapports BIRT et Java Web Start
    Par Vikisme dans le forum BIRT
    Réponses: 1
    Dernier message: 10/04/2007, 08h57
  5. CppUnit et la generation de rapport au format text
    Par xxiemeciel dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 03/10/2005, 22h08

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