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 :

xlwt / XFStyle / easyxf


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut xlwt / XFStyle / easyxf
    Bonjour,

    J'écris des listes de str via des boucles dans un fichier excel avec xlwt.

    Il m'arrive dans mes textes d'avoir des retour à la ligne avec un "\n", cependant quand j'ouvre le fichier excel, je suis obliger de double clic dans la cellule qui contient un retour a la ligne pour les faire appaitre. Comme si je l'actualisais finalement.

    Je voudrai aussi savoir si il est possible d'avoir une option qui redimensionnerait les cellules apres la fin de l'écriture des listes. Dans le but de faire apparaitre tout le texte.

    Voici mon code, j'utilise aussi xlutils.copy pour pouvoir modifier un fichier excel existant.
    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
    def compilation(name):
        rb = open_workbook(('calque.xls'), formatting_info=True, on_demand=True)
        wb = copy(rb)
        liste_fin=[]
     
        for i in range (len(liste_ecriture)):
            for k in liste_ecriture[i]:
                liste_fin.append(k)
        for i in range (len(liste_fin)):
            compteur=3
            for l in liste_fin[i] :
                if compteur%2==0:
                    style = XFStyle()
                    style.alignment.wrap = 1
                else :
                    style = XFStyle()
                    style.alignment.wrap = 1                
     
                wb.get_sheet(0).write(compteur-1,5+i,l,)
                compteur+=1
        wb.save(name)
    name est le chemin où le veut enregistrer le nouveau fichier excel modifié. car l'ancien est le "calque"

    Voici le type de liste que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    liste_ecriture=[[['Flat design', '', '', '', '', '', '', '', '', '', 'upper housing deformation \nupper housing breackage', '', '', '', '', ''],
                         ['Angular design (type 1136)', '', 'Injection tooling', 'Request more', '', '', '', '', '', 'More time is needed', 'tools more complex\nupper housing deformation\nupper housing breackage', '', '', '', 'Tooling on cost', '']],
                        [['Labyrinth design', '', '', '', '', '', '', '', 'Sealing performance not optimize\nSealing performance', '', '', '', '', '', '', '']],
                        [],
                        []]
    Merci d'avance,

    Valentin.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Personne n'a déjà rencontré ce problème ? ou je n'ai pas été précis ?

    Cordialement.

    Valentin.

  3. #3
    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 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par StabiloHB Voir le message
    Personne n'a déjà rencontré ce problème ? ou je n'ai pas été précis ?
    a mon sens un peu des deux

    Vous racontez:
    Citation Envoyé par StabiloHB Voir le message
    Il m'arrive dans mes textes d'avoir des retour à la ligne avec un "\n", cependant quand j'ouvre le fichier excel, je suis obliger de double clic dans la cellule qui contient un retour a la ligne pour les faire appaitre. Comme si je l'actualisais finalement.
    Puis vous postez un bout de code dans lequel on trouve:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                if compteur%2==0:
                    style = XFStyle()
                    style.alignment.wrap = 1
                else :
                    style = XFStyle()
                    style.alignment.wrap = 1                
     
                wb.get_sheet(0).write(compteur-1,5+i,l,)
    autrement dit vous définissez un style (et pourquoi définir ce style là dans tous les cas?) qui devrait résoudre le problème (réponse qui vous a été donnée dans cette discussion) mais vous ne l'utilisez pas.

    Ca serait mieux de poster un code qui permette de construire le workbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from xlwt import Workbook, XFStyle
     
    book = Workbook()
    style = XFStyle()
    style.alignment.wrap = 1
    sheet = book.add_sheet('test')
    for i in range(10):
        sheet.write(0,i,'aaaa\nbbbb\n', style)
    book.save('test.xls')
    puis à partir de là, expliquer ce qu'est votre problème...

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

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 132
    Points : 130
    Points
    130
    Par défaut
    Bonjour,

    J'ai bien utilisé la solution de la discussion que vous m'avez mis en lien (je n'ai pas récris dans cette discusion car le sujet semblait clo et je voulais ensuite demander pour les couleurs).

    Cependant quand j'ouvrais le fichier Excel avec windows (après avoir écrit dessus grâce au programme) les celulles n'étaient pas écrites avec le saut à la ligne. Mais quand on "actualise" c'est à dire double clic sur la cellule le saut à la ligne s'affiche. Mais cela était pénible car il fallait double clic sur toutes les cellules contenant un saut de ligne puis enregistrer ...

    Pour le if else qui donne finalement la même chose c'est que je n'avais pas encore mis les couleurs je voulais regler ce problème d'abord.

    Mon code marchait normalement, il faut juste donner un emplacement d'un fichier Excel sur votre ordinateur.

    Sinon mon problème c'est mystérieusement résolue quand j'ai rajouter un pattern solid dans le style que j'utilise.

    Merci pour votre temps en tout cas

    Valentin

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

Discussions similaires

  1. [Python 3.X] Module xlwt, écrire dans Excel avec Python
    Par StabiloHB dans le forum Bibliothèques tierces
    Réponses: 3
    Dernier message: 12/07/2016, 18h11
  2. Avec xlwt, est-il possible d'écrire dans un fichier Excel déjà existant?
    Par ProgrAlek dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 26/12/2015, 20h49

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