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

Shell et commandes GNU Discussion :

Convertir un fichier csv en fichier xls


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 40
    Points : 30
    Points
    30
    Par défaut Convertir un fichier csv en fichier xls
    Bonjour,

    j'ai un fichier csv et je veux le convertir en fichier xls avec ligne de commande

    et je veux savoir si il existe une possiblité de colorer la première ligne.

    j'ai trouvé ce code python j'ai installé le packet demandé masi ne sais pas ou je doit spécifier le chemin d fichier .
    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
     
    import os
    import glob
    import csv
    import xlwt # from http://www.python-excel.org/
     
    for csvfile in glob.glob(os.path.join('.', '*.csv')):
        wb = xlwt.Workbook()
        ws = wb.add_sheet('data')
        with open(csvfile, 'rb') as f:
            reader = csv.reader(f)
            for r, row in enumerate(reader):
                for c, col in enumerate(row):
                    ws.write(r, c, col)
        wb.save(csvfile + '.xls')
    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Amha, c'est du python et non du shell!

    Sans connaître python, il semble que l'instruction os.path.join('.', '*.csv') retourne liste des fichiers dont le nom correspond à "*.csv" dans le répertoire courant ".".

    Si tu veux traiter seulement le fichier "/chemin/vers/toto.csv", tu peux très probablement remplacer ce bout de code par os.path.join('/chemin/vers', 'toto.csv').

    Bien évidemment, dans ce cas, il n'est pas nécessaire de faire une boucle pour traiter un seul fichier!

    Si jamais, par chance, le remplacement de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for csvfile in glob.glob(os.path.join('.', '*.csv')):
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    csvfile = '/chemin/vers/toto.csv'
    se trouvait fonctionner, alors tu peux traiter ton fichier sans boucle...
    sinon il faut faire appel à un programmeur python ou lire la doc...

  3. #3
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    Effectivement comme le dis jack-ft os.path.join(path1[, path2[, ...]]) sert à assembler des morceaux de chemin pour obtenir un chemin complet.

    Et donc faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    csvfile = '/chemin/vers/toto.csv'
    si il n'y a qu'un fichier à traiter est le plus simple.

    PS : attention à l'indentation en modifiant le script python est pointilleux à ce sujet
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for csvfile in glob.glob(os.path.join('.', '*.csv')):
    attrape tous les fichiers .csv du repertoire courant et les convertit en .xls
    S'il n'y a qu'un seul fichier - dans le repertoire courant -ca fonctionne aussi.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    Tout à fait exact wiztricks.
    Toutefois, l'utilisation de la syntaxe serait plus courte et claire il me semble.

    Et mond14 semble dire que il n'y a qu'un seul et unique fichier à traiter donc...
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    La question du PO est "comment spécifier le chemin du ficher".
    Tel qu'est écrit le script, il faut mettre les fichiers .csv dans un répertoire et lancer le script après un cd au répertoire.

    Modifier le script, l'adapter a d'autres besoins, ou discutez de son style,... sont d'autres sujets.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par mond14 Voir le message
    Bonjour,

    j'ai un fichier csv et je veux le convertir en fichier xls avec ligne de commande
    ...
    masi ne sais pas ou je doit spécifier le chemin d fichier .
    En fait, (une fois n'est pas coutume) les spécifications ne sont pas bien claires!
    et ma boule de cristal est encore chez le réparateur...

    J'ai plusieurs hypothèses:
    1. mond14 a un répertoire "chemin/vers" contenant exactement un seul fichier "fichier.xls" qu'il veut traiter avec ce script sans le modifier.
      La réponse est alors:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      cd chemin/vers ; chemin_du/script.py
    2. Le répertoire "chemin/vers" contient plusieurs fichiers .xls dont "fichier.xls" que mond14 veut traiter à l'exclusion des autres et le fichier peut être copié ou déplacé dans un autre répertoire où il serait seul de son genre, alors on peut aisément se ramener au cas précédent par copie ou déplacement du fichier.
    3. Comme dans le cas précédent, il y a plusieurs fichiers .xls dont un seul à traiter, mais on n'a pas le droit de le copier ou déplacer et le script doit être utilisé dans un contexte où on ne peut pas faire de "cd", alors il faut le modifier comme il a déjà été indiqué


    Le jour où les spécifications seront suffisamment précises, les réponses seront plus directes...
    (et, tant qu'à rêver, j'aimerais bien avoir un poney (Suzy Derkins))

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/09/2017, 11h47
  2. Réponses: 3
    Dernier message: 23/05/2013, 16h05
  3. script pour convertir une table HTML en fichier CSV (ou excel)
    Par whitespirit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/08/2008, 08h30
  4. ecrire dans un fichier csv ou ods (xls)
    Par afrodje dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/04/2007, 16h45

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