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

Documents Java Discussion :

Export CSV


Sujet :

Documents Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 64
    Points
    64
    Par défaut Export CSV
    Bonjour je dois importer das données dans un fichier CSV et j'ai le problème suivant :

    Quand je met des ; et que je fais mon export. Quand j'ouvre le fichier avec excel, il ne me le formate pas. mais quand je l'enregistre et que j'ouvre excel, que je fais ouvrir mon fichier là il me le formate

    Et c'est l'inverse dans le cas ou je mets des ",". Moi je voudrais qu'il me le formate dans les 2 cas


    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
     
    //exporter les stats en csv
    			HttpServletResponse response = httpParam.getResponse();
    			response.setContentType("text/csv");
    			//response.setContentType( "application/csv" );  
    			response.setHeader("Content-disposition",
    					"attachment; filename=\"statistiques.csv\"" );
    			PrintWriter out = response.getWriter();
    			MessageResources messages = getResources(httpParam.getRequest());
    			Locale loc = getLocale(httpParam.getRequest());
     
    			out.println(messages.getMessage(loc,"administration.stats.annee") + "," + messages.getMessage(loc,"administration.stats.mois") + ","
    							+ messages.getMessage(loc,"administration.coderatt.liste.filiale") + "," + messages.getMessage(loc,"administration.stats.id") + ","
    							+ messages.getMessage(loc,"administration.stats.nom") + "," +  messages.getMessage(loc,"administration.stats.prenom") + ","
    							+ messages.getMessage(loc,"administration.stats.nbRecherches") + "," + messages.getMessage(loc,"administration.stats.nbTelechargements"));

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Qu'est ce que tu entends par "il me le formatte ?"

    Tu veux obtenir tes données sous quelle forme ?

    C'est pas forcément facile de faire comprendre à Excel ce que tu veux faire avec un fichier csv, sur la présentation des données, il risque de te faire un peu ce qu'il veut...

    A ce niveau là, si tu veux sortir des classeurs Excel bien fait, bien formatés et tout, il vaut mieux passer par une API, style JExcel, ou POI...

    Mais sinon, tu veux l'avoir comment ton fichier ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 64
    Points
    64
    Par défaut
    Il me met bien un champ par colonne en prenant en compte, les séparateur "," ou ";".

    Je crée un fichier csv sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Year;Month;Affiliate;Id;Last name;First name;Search count;Download count
    2005;8;null;benoit roblin;roblin;benoit;2;2
    2005;9;FILIALE001;thierry boileau;boileau;thierry;8;1
    Et je veux qu'il me remplit un champ par cellule.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Et si j'ai bien compris, il te donne au bout du compte quand il "ne te le formatte pas" tous les champs d'une ligne dans une seule cellule, ce qui t'oblige a aller sous Excel dans Données/Convertir, pour l'avoir comme tu veux...

    Mmmm...

    Bizarre ton probleme, normallement, un csv, c'est un txt avec des ; pour séparateurs, donc ca fait etrange que ca passe avec ",", et pas avec ";" quand tu l'envoies par servlet... Que Excel ne le formatte pas correctement quand tu le sauves et que tu l'ouvres apres, avec des virgules en separateur, c'est normal, c'est pas prévu pour, mais avec des points virgules, la...


  5. #5
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Citation Envoyé par ghorgor
    Bizarre ton probleme, normallement, un csv, c'est un txt avec des ; pour séparateurs, donc ca fait etrange que ca passe avec ",", et pas avec ";"
    Non, je ne suis pas d'accord.
    CSV veut dire Comma Separated Values (Valeurs Séparées par des Virgules).
    D'ailleurs, c'est le comportement classique de Excel : si on double-clique sur un fichier ayant l'extension csv, il ne reconnait par défaut que les séparateurs virgule.
    Si les séparateurs sont des points-virgules, il faut le spécifier : sélectionner la colonne et faire un 'Outils' -> 'Convertir ...'
    Par contre, si on passe par un 'Fichier' -> 'Ouvrir' ... c'est l'inverse !!! (ah, ben, faut pas chercher ...)

    lapartdombre : Un conseil, si tu as le choix, utilise plutôt le séparateur tabulation. Ca pose beaucoup moins de problèmes. En effet, trouver une virgule ou un point-virgule dans un champ texte n'est pas si rare. Et dans ce cas, ça pose des problèmes de décalage dans les champs.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Alors j'ai une bizarrerie sur mon poste, et sur tous ceux du reseau de l'entreprise, car les fichiers générés par Excel quand je les sauve au format csv sont séparés par des ;, et par defaut, il me reconnait les ; et non les ,... J'ai le comportement exactement inverse de ce que tu me décris...

    Enfin, j'ai peut etre une version mutante d'Excel, mais je te garantie que ca marche comme ca chez moi, et sur la bonne dizaine de postes qui m'entourent... Donc c'est un mutant qui se propage...

    Maintenant, si tu veux etre sur de la présentation de ton doc, -> JExcel...
    et fais un xls...

    Si tu es obligé de faire un csv, la tu as vraiment un probleme...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 100
    Points
    100
    Par défaut
    idem, par defaut (ver 2002), il utilise des ;.
    Je veux juste ajouter que si on a un ";" dans une colonne :
    te;st => "te;st"
    si on a un """ dans une colonne :
    te"st => "te""st"

  8. #8
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    OK, ce que j'ai dit ne doit être vrai que pour Excel 2000 (qui la version installé sur les PC de la boîte).

    En tout cas, ça prouve que pour ouvrir un fichier Excel via un navigateur, le format csv n'est pas l'idéal (puisque le comportement diffère selon les postes clients).

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Ben ce qui est d'autant plus délirant que quand tu regardes la doc sous Excel pour te renseigner sur les formats csv, il te marque bien que c'est séparé par des virgules... A priori, il y a des chances qu'ils soient passé à un moment de virgules a point-virgules pour la simple raison qu'on rencontre moins souvent les ; dans des champs...

    Mais sinon, CSV pas idéal, c'est clair, c'est ce que je soutiens depuis mon premier post...

  10. #10
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par NGY
    Un conseil, si tu as le choix, utilise plutôt le séparateur tabulation. Ca pose beaucoup moins de problèmes. En effet, trouver une virgule ou un point-virgule dans un champ texte n'est pas si rare. Et dans ce cas, ça pose des problèmes de décalage dans les champs.
    c'est pour cela qu'il y a moyen de préciser le séparateur utilisé ( le ; ) mais aussi un délimiteur (par exemple "") ce qui permet d'avoir un ; dans le texte d'une cellule....

  11. #11
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Citation Envoyé par biozaxx
    c'est pour cela qu'il y a moyen de préciser le séparateur utilisé ( le ; ) mais aussi un délimiteur (par exemple "") ce qui permet d'avoir un ; dans le texte d'une cellule....
    Je peux t'affirmer, pour avoir eu pas mal à faire avec des fichiers csv, que c'est une solution loin de pouvoir régler tous les problèmes.
    Notamment dans les fichiers contenant des adresses, où les caractères , ; et " sont très présents.

  12. #12
    Membre actif Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Points : 214
    Points
    214
    Par défaut
    j'ai la flemme de lire tous les post, bref
    utilise la syntaxe pour les csv
    "attribut 1";"attribut 2";"etc etc etc"

    utilise guillemets + point-virgule
    ca résolvera tes problèmes
    Colère et Haine mènent à la Puissance

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Notamment dans les fichiers contenant des adresses, où les caractères , ; et " sont très présents.
    Sans parler du fait que si tu as des formats apparentés numériques, genre numéros de téléphone, ou références clients, style 0156984515, ca te sucre le 0 au debut, parce qu'il prend uniquement une mise en forme standard... Ca peut se régler avec des ' au debut des chaines, mais bon, pas top...

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

Discussions similaires

  1. [Access 2003] - Exportation.csv
    Par guiguikawa dans le forum Access
    Réponses: 7
    Dernier message: 28/06/2006, 16h07
  2. [ACCESS 2003]Export .csv
    Par guiguikawa dans le forum Access
    Réponses: 6
    Dernier message: 23/06/2006, 10h56
  3. Export CSV
    Par LeCaméléon dans le forum XMLRAD
    Réponses: 3
    Dernier message: 18/04/2006, 14h32
  4. [EXPORT] CSV
    Par sleepy2002 dans le forum Oracle
    Réponses: 2
    Dernier message: 03/04/2006, 10h14
  5. Export CSV de champs qui contiennent des ";"
    Par boteha dans le forum Outils
    Réponses: 4
    Dernier message: 19/09/2005, 19h05

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