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 :

Créer et enregistrer un fichier csv


Sujet :

JSF Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 66
    Points
    66
    Par défaut Envoyer un fichier csv au client
    bonjour à tous,
    voici mon problème:
    dans ma fonction je créer un fichier avec l'extension csv et je l'enregistre dans mon système de fichier comme suite :

    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
    public void genererFichier()throws ServletException, IOException {
     
     
     
     
             try {
     
                   FacesContext context = FacesContext.getCurrentInstance(); 
                   HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest(); 
                   //Need the base URL for the webapp, so 
                   String location = request.getRequestURL().toString(); 
                   //if your webapp name is bob 
                   location = location.substring(0, location.indexOf("/PreparV3")); 
     
                   //build your filename
     
                   //on prend la date systeme pour presque permettre l'unicité du fichier
                   Date maDateAvecFormat = new Date();
                   SimpleDateFormat dateLongue = new SimpleDateFormat("yyyyMMddHHmmss");
     
                   filename = "Export"+File.separator+"Temp"+File.separator+dateLongue.format(maDateAvecFormat)+"_releveExport.csv"; 
     
                   //Get the real path to the webapp 
                   String realPath = ((ServletContext)context.getExternalContext().getContext()).getRealPath("/"); 
                   System.out.println("chemin "+realPath);
     
                   fichierReleve = realPath + filename;
     
                   //Création du fichier
                   java.io.File fichier = new java.io.File(fichierReleve);
                   FileWriter fichierW = new FileWriter(fichier);
                   fichierW.write("testtest, erfefef, fefefef,fefefe ,fefef, fefef,fefe");
                   fichierW.close();
     
                   // write, close and redirect
                   context.getExternalContext().redirect(location +"/PreparV3/"+ filename);
     
             } catch (FileNotFoundException e) { 
     
             System.err.println("File not found exception"); 
     
             e.printStackTrace(); 
     
             } catch (IOException e) { 
     
             System.err.println("**********IOexception********"); 
     
             e.printStackTrace(); 
     
             } catch (Exception e) { 
     
             System.err.println("******exception*******"); 
     
             e.printStackTrace();
     
             }
     
     
     
    	 }
    quand j'appel cette fonction depuis mon navigateur en appuyant sur un bouton cela me telecharge directement le fichier et l'affiche dans mon navigateur.

    par contre quand je change l'extension .csv en .xls le comportement et différent : quand je click su le bouton j'ai une fenetre telecharger qui me propose soit d'ouvrir ou d'enregistrer le fichier excel comme quand on telecharge un lociciel ou une image sur le net.

    je voudrais avoir la même fenêtre pour mon fichier .csv .

    voila je vous remercie d'avance pour vos réponses et n'hésiter pas a me poser des question si ce n'est pas claire.

    est ce que cela est du a l'os ou faut il indiquer cela dans la fonction?
    j'ai aussi remarquer que sous firefox cela marche tres bien avec .csv mais pas sous ie

  2. #2
    Expert éminent
    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
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Tu peux t'inspirer de la méthode décrite dans ce tutoriel http://jaub.developpez.com/tutoriels/jsf/jasper-jsf/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 66
    Points
    66
    Par défaut
    merci pour la réponse, j'ai parcoru le tut mais je n'ai pas trouvé ce dont j'ai besoin:

    mon fichier "fichier.csv" est crée mais quand l'utilisateur appel la fonction ci-dessus la methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    context.getExternalContext().redirect(location +"/PreparV3/"+ filename);
    telecharge le fichier sur sa machine. et une fenêtre téléchargement doit normalement s'ouvrir automatiquement par l'os avec la possibilité soit d'ouvrir le fichier ou de l'enregistrer. la fenêtre apparait bien si je remplace l'extension csv par xsl ou doc mais pas csv ce qui me semble pas logique .

    je sais que ça peut paraitre pas claire comme problématique mais si il y a des personne qui se sont déjà confronté a ce problème je les remercie d'avance pour leur aides

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Ne serait-ce pas un problème de la gestion du type de fichier par le navigateur ? Quel est le MIME/Type d'un .CSV ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 66
    Points
    66
    Par défaut
    je crois que c "text/csv"

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 66
    Points
    66
    Par défaut
    voila j'ai trouver la solution dans le forum struts !!!! c bon je crois que je vais laisser tomber jsf je change pour struts

    il fallait que j'ajoute le type mime Dans mon web.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <web-app>
      <mime-mapping>
        <extension>csv</extension>
        <mime-type>application/csv</mime-type>
      </mime-mapping>
    </web-app>
    merci a tous

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

Discussions similaires

  1. [CSV] Enregistrer un fichier CSV depuis un site
    Par -Neo- dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2008, 23h04
  2. Crée macro pour enregistrer en fichier .csv
    Par jonki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2008, 14h24
  3. VBScript : Créer puis ouvrir un fichier csv
    Par Stephbzh dans le forum VBScript
    Réponses: 1
    Dernier message: 04/06/2008, 09h36
  4. [MySQL] Enregistrer un fichier .csv obtenu d'un appel SQL
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2007, 18h55
  5. Enregistrer un fichier ".CSV" en ".XLS"
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2006, 14h05

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