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

JSF Java Discussion :

jasper+exporter jsf datatable problem


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut jasper+exporter jsf datatable problem
    salut tous
    aidez moi svp
    j ai un richfaces datatable qui se base sur une requête paramétré
    je veux exporter le contenu du datatable vers excel et pdf

    jai essayé d'exporter le datatable vers xml et puis de l'exporter par jasper mais je n'arrive pas a basé jasper sur un fichier xml comme source de données

    svp si quelqu'un a une idée pour exporter le datatble vers excel et pdf
    ou de le lier avec jasper aidez moi svp

    et merci bcp

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    pour excel, tu peux utiliser l'api d'apache poi

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    merci Sniper37
    donner moi si tu a un exemple

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour,
    Je ne comprends pas pourquoi on essai tout le temps d'exporter directement une DataTable en PDF et/ou Excel ... Je veux dire que le DataTable est une façon de représenter des données à l'utilisateur, tout comme un tableau Excel.

    Il faut plutôt agir sur les données. Tu affiches déjà un DataTable, donc t'as forcément des données plus ou moins tabulaires.
    Le truc c'est de passer ces données à Jasper, et pour ce faire, je t'invite à utiliser une IJRDataSource :

    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
    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JRField;
     
     
    public class MyPersonalDs implements JRDataSource {
    	private List<Donnée> données;
    	private Donnée donnée;
    	private Iterator<Donnée> iterator;
     
    	public PointageReportDs(List<Donnée> données,
    			AccessService accessService) {
    		super();
    		this.données = données;
    		iterator = données.iterator();
    	}
     
    	@Override
    	public Object getFieldValue(JRField field) throws JRException {
    		if ("nom".equals(field.getName())) {
    			return donnée.getName();
    		} else if ("day".equals(field.getName())) {
    			DateUtils.formatDate(donnée.getWhen());
    		} 
    		return "--";
    	}
     
    	@Override
    	public boolean next() throws JRException {
    		if (iterator.hasNext()) {
    			donnée = iterator.next();
    			return true;
    		} else {
    			return false;
    		}
    	}
    Reste plus qu'à passer cette nouvelle DataSource à Jasper:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JasperPrint jp = JasperFillManager.fillReport(reportStream,
     
    					params, new MyPersonalDs(lesDonnes));

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 40
    Par défaut
    Bonjour ,
    je crois que je cherche la meme chose que toi , mois aussi j'ai le meme probleme j'ai cherche partout le seul bout de code que j'ai trouvé se trouve dan ce lien http://wiki.apache.org/myfaces/Expor...ionListener%29
    mais j'ai essyae de le teste mais ca marche pas . au niveau de la documentation de ce bout de code l'auteur a parlé que " l'exportation vers Excel est utilisé (Apache POI), tandis que le pdf est un (Itext)" mais j'ai pas compris de quoi s'agit t'il

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    merci tous pour vos reponses
    je vais tester vos propositions

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 40
    Par défaut
    Bonjour,
    au cas ta trouvé quelque chose merci bien de me le signalé

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par ouatouch_abdeljalil Voir le message
    Bonjour ,
    je crois que je cherche la meme chose que toi , mois aussi j'ai le meme probleme j'ai cherche partout le seul bout de code que j'ai trouvé se trouve dan ce lien http://wiki.apache.org/myfaces/Expor...ionListener%29
    mais j'ai essyae de le teste mais ca marche pas . au niveau de la documentation de ce bout de code l'auteur a parlé que " l'exportation vers Excel est utilisé (Apache POI), tandis que le pdf est un (Itext)" mais j'ai pas compris de quoi s'agit t'il
    Attention le code de myfaces te montre comment utiliser l'api poi, mais il fonctionne que pour une table tomahawk, le principe est de'utiliser un buffer html de traiter le contenu HTML pour en générer le fichier excel, comme a dit djo.mos, il faut voir la dataTable comme une façon d'afficher les données sur un navigateur, les données sont déjà sur le serveur pour générer un fichier excel ou pdf, bcq de libraires le font..
    si tu as commencé avec poi et que tu as un probleme, post ton probleme on peut t'aider, mais avant il faut aller sur le site d'apache poi prendre un exemple et comprendre comment ça marche pour l'adapter à ton cas..

  9. #9
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 40
    Par défaut
    bonjour ,
    j'ai pas travaille avec Apache POI , la seule que j'ai testé c'est charger une table avec richfaces et sa mrche tres bien mais au niveau de generation de pdf sa marche pas

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    merci bien djo.mos
    mais jai oublié de vous dire que je suis débutant en jasper
    et comme ça jai compris presque rien de votre code
    mais je suis intéressé a votre méthode
    svp donne moi autre exemple plus détaillé de jasper avec JRDataSource
    et je vous remercier très fort

  11. #11
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Comme c'est un sujet très prisé actuellement, je vais essayer d'écirire un article ou un billet ladessus, sources à l'appuie (ça risque de prendre du temps toutefois).

  12. #12
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    merci djo.mos je vais vous attendre

  13. #13
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Bonjour les amis
    finalement j ai réussi a lier jasper avec ma liste comme source de données
    j'exporte vers PDF comme ça :
    pour affiche la boite de dialogue d'enregistrement

    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
     
    String reportId = "article";
    		File file = new File("E:\\tests\\");
    		JasperPrint jasperPrint = JasperFillManager.fillReport(
    				new FileInputStream(new File(file, reportId + ".jasper")),
    				null, new JRD(dao.getArticleS()));
    		byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
    		FacesContext context = FacesContext.getCurrentInstance();
    		HttpServletResponse response = (HttpServletResponse) context
    				.getExternalContext().getResponse();
     
    		response.addHeader("Content-disposition",
    		 "attachment;filename=rapport.pdf");
    		 response.setContentLength(bytes.length);
    		 response.getOutputStream().write(bytes);
    		 response.setContentType("application/pdf");
    		 context.responseComplete(); return null;
    mais jai 2 problèmes :

    probleme 1:
    après l'exécution j'obtiens ça :
    %PDF-1.4 %3 0 obj <>stream xi\IH&BqkW[Sd' R|iakI.ywc$?<ߪw,elVR;wyNn;I}PQ>G[(s`E /L. 6*Er딨lUSF?9R]fce+YC1$.$0\ UN!@ ޼-j#@U!$[D%Bp@ ŗ 6DB
    probleme 2:

    javax.servlet.ServletException: #{f.v}: /Article/Liste.xhtml @83,34 action="#{f.v}": net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
    Source text : $F{article_codearticle}
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:150)
    org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:379)
    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:506)


    avec codearticle de type Integer
    aider mo SVP

Discussions similaires

  1. JSF rich dataTable probleme de valeur
    Par Pirion dans le forum JSF
    Réponses: 4
    Dernier message: 09/06/2009, 16h20
  2. exportation sur excel problème de formatage
    Par Alexandre Sahli dans le forum Access
    Réponses: 12
    Dernier message: 05/09/2006, 17h56
  3. [JSF] DataTable et liste
    Par Ahmed0012 dans le forum JSF
    Réponses: 1
    Dernier message: 27/05/2006, 03h52
  4. Réponses: 6
    Dernier message: 26/04/2006, 16h36
  5. JSF Datatable et selectBooleanCheckbox
    Par faya972 dans le forum JSF
    Réponses: 4
    Dernier message: 03/04/2006, 22h24

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