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 :

faire un retour à la ligne dans un document excel dans une cellule en Python


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut faire un retour à la ligne dans un document excel dans une cellule en Python
    Bonjour,
    Je veux insérer dans une même cellule un nombre de chaines de caractères.
    par exemple je veux écrire dans la même cellule les chaines suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - data1
    - data2
    - data3
    j'ai mis ça en trois chaines dans une liste L avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L=['data1','data2','data3']
    Voici mon programme:
    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
    import sys
    from xlwt import Workbook
     
    # pour creer un "classeur"
    classeur = Workbook()
    # On ajoute une feuille au classeur
    feuille = classeur.add_sheet("OCB")
    L=['data1','data2','data3']
    for keys in L:
            if len(L)>1:
            items=""
            for item in L:
                items=items+'\n'+'- '+item
            feuille.write(0,3,items)
        else:
            feuille.write(row,3,L)  # s'il y a une seule valeur dans la liste L on l'insère sans  traitement à faire
        row=row+1
    # Ecriture du classeur sur le disque
    classeur.save("fichier.xls")
    print ("Fichier créé: {}".format("fichier.xls"))
    Le problème ici je n'obtiens pas le retour à la ligne dans la cellule voulu.
    voici ce j'obtiens:
    Nom : Sans titreff.png
Affichages : 2051
Taille : 1,1 Ko

    est-ce que vous avez une idée comment faire ça?
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par mido1951 Voir le message
    est-ce que vous avez une idée comment faire ça?
    Pourquoi poser une question EXCEL dans un forum Python?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Pourquoi poser une question EXCEL dans un forum Python?

    - W
    Parce que mon programme est en Python. En plus, l'excel ce n'est qu'un output.
    Le problème ici dans le programme Python.
    Merci.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Et si tu fais ton output vers un .csv que tu ouvres ensuite via Excel ?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par esope60 Voir le message
    Et si tu fais ton output vers un .csv que tu ouvres ensuite via Excel ?
    J'ai essayé mais ça marche pas.
    Je veux bien opté vers l'approche Output un fichier excel.
    Le truc c'est que excel ne veut pas accepter le '\n' que je lui ai entré en python.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ton code présente des incohérences d'indentation et utilise deux boucles inutiles.
    Commence par te simplifier la vie et après on verra si le résultat n'est toujours pas bon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> L=['data1','data2','data3']
    >>> s = "\n".join(L)
    >>> s
    'data1\ndata2\ndata3'
    >>> L=['data1']
    >>> s = "\n".join(L)
    >>> s
    'data1'

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Essaie ceci :

    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
    import sys
    from xlwt import Workbook
    from xlwt import XFStyle
     
    # pour creer un "classeur"
    classeur = Workbook()
    # On ajoute une feuille au classeur
    feuille = classeur.add_sheet("OCB")
     
    style = XFStyle()
    style.alignment.wrap = 1
     
    L=['data1','data2','data3']
    for keys in L:
        if len(L)>1:
            items=""
            for item in L:
                items=items+'\n'+'- '+item
            feuille.write(0,3,items,style)
        else:
            feuille.write(row,3,L)  # s'il y a une seule valeur dans la liste L on l'insère sans  traitement à faire
        row=row+1
    # Ecriture du classeur sur le disque
    classeur.save("fichier.xls")
    print ("Fichier créé: {}".format("fichier.xls"))
    Voir ici : Trying to write a cell with multiple lines in it
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par mido1951 Voir le message
    Parce que mon programme est en Python. En plus, l'excel ce n'est qu'un output.
    Le problème ici dans le programme Python.
    Certes mais si vous avez créé votre fichier EXCEL dans n'importe quel langage, s'il ne contient pas l'information qu'EXCEL attend pour afficher vos '\n' par un retour à la ligne, çà ne le ferait pas non plus.
    Donc quoi dire à EXCEL (la cellule doit avoir l'attribut "wrap" à True) est un sujet EXCEL.
    Et comment coder les attributs d'une cellule avec xlwt est dans la documentation et sachant ce qu'on cherche on peut même trouver des exemples sur Internet.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/03/2020, 23h20
  2. Réponses: 6
    Dernier message: 03/10/2012, 22h51
  3. Faire un retour à la ligne dans un gridPanel
    Par Nheil dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 11/03/2011, 15h42
  4. Faire un retour à la ligne dans l'email?
    Par sleeg dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/10/2010, 16h32
  5. faire un retour à la ligne dans title
    Par tiyolx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/09/2007, 16h25

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