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

Python Discussion :

Problème génerer un fichier excel en python


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Points : 41
    Points
    41
    Par défaut Problème génerer un fichier excel en python
    Bonjour,

    J'ai un code python qui génère un fichier texte,le code en gros ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    f = open(Fichier,'w')
    for mot in Dico :                   
        ligne = mot + '\t'+str(Dico[mot])/freq))+'\n'          
        f.write(ligne)
    f.close()
    ça me donne en sortie un fichier texte qui ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto     0.25
    titi    0.82
    tata     0.45
    Je veux en fait au lieu de generer un fichier texte, générer plutot un fichier excel plus organisé, genre le mot soit stocké sur une case et la frequence stocké dans la case à coté sans avoir besoin de déclarer les tabulations.
    Est ce que c'est possible avec python ?

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le plus simple est d'utiliser le module csv fourni avec Python.

    Cela conduira à transformer, par exemple le tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [["toto", 0.25], ["titi", 0.82], ["tata", 0.45]]
    en un fichier texte xxx.csv qui contiendra:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "toto";0.25
    "titi";0.82
    "tata";0.45
    On peut régler les paramètres: avoir ou non les guillemets et choisir le séparateur (ici un ";")

    Ce fichier est reconnu sans difficulté par Excel qui placera chaque donnée séparée par le séparateur ";" dans une colonne différente.

    Un problème cependant: Excel a une reconnaissance automatique des nombres. Cela peut être pratique, mais aussi gênant dans certains cas: par exemple, les codes postaux sont reçus comme des nombres, même transférés avec des guillemets. Cela veut dire aussi qu'une version française d'Excel s'attendra à ce qu'un nombre réel arrive avec une virgule décimale. Donc, si on laisse le point décimal, le nombre sera intégré dans Excel avec le type chaine. Pour palier ce problème, il suffit de convertir le nombre en chaine et de changer le point en virgule avec replace: (str(nb).replace('.', ',')). Ce qui donnera le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "toto";"0,25"
    "titi";"0,82"
    "tata";"0,45"
    Je ne sais pas si tu travailles avec Python 2 ou 3. Si c'est avec Python 2, il faudra voir le problème des encodages des chaines de caractères en cas de textes comportant des caractères accentués.

    A noter qu'Excel est lui-même capable d'exporter ses données sous forme de fichiers csv, ce qui permet à Python de les lire (toujours avec ce module csv) pour les exploiter.

    Ces fichiers csv sont simples à construire, mais on ne transfère ainsi que des données, c'est à dire pas de formule ni de format de présentation des grilles. Pour lire/écrire des tableaux Excel plus complexes, il y a d'autres modules à utiliser comme ici: http://www.python-excel.org/.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Salut, autre alternative aussi, utiliser du Libre Office, et tu dispose alors du module EZODF.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

Discussions similaires

  1. Problème ouverture de fichier excel
    Par label55 dans le forum C#
    Réponses: 2
    Dernier message: 26/03/2009, 15h15
  2. Problème d'ouverture fichier excel
    Par Thump13 dans le forum Documents
    Réponses: 0
    Dernier message: 05/09/2008, 11h27
  3. Problème taille de fichier excel
    Par Capsule dans le forum Excel
    Réponses: 7
    Dernier message: 18/06/2007, 19h42
  4. Manipuler un fichier excel avec python
    Par dipajero dans le forum Général Python
    Réponses: 4
    Dernier message: 10/02/2006, 00h14

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