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

Bibliothèques tierces Python Discussion :

[lpod] Comment modifier le style des cellules


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut [lpod] Comment modifier le style des cellules
    Bonjour,

    J'essaie de récupérer les valeurs d'un tableau excel et de les reporter dans un tableau dans un document .odt
    Grâce à OpenOffice, j'ai pu convertir sans soucis le fichier excel en fichier .ods

    Grâce à la documentation, il m'est possible de créer le document, récupérer des données dans un tableau etc... mais j'ai un problème concernant les styles et les types des cellules du tableau à créer.

    1) Je n'arrive pas à assigner un style à un texte dans les cellules
    J'ai essayé de créer un style puis d'y créer une "area" de type de texte. Mais ça ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cell_titre_style = lpod.style.odf_create_style('table-cell',
    name='StyleCellTitre',
    display_name='StyleCellTitre',
    )
    cell_titre_style.set_properties(area='text',weight='bold',size='13pt')              
    o_fichier_remise.insert_style(para_titre_style)
    J'arrive cependant à modifier le style du texte de paragraphes, en utilisant la méthode "set_span" du paragraphe, hélas en regardant le code source de la librairie, les cellules ne disposent pas de cette méthode.

    2) Je n'arrive pas à assigner un type à des cellules (monnaie).

    J'ai essayé avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cell_montant = lpod.table.odf_create_cell(str(ligne[3]))
    cell_montant.set_type('currency')
    cell_montant.set_currency(u'EUR')
    Également avec celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cell_montant.set_value(ligne[3],cell_type='currency',currency=u'EUR')
    Hélas sans succès.

    Merci de l'aide que vous voudrez bien m'apporter.

    Audric

  2. #2
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    418
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 418
    Points : 828
    Points
    828
    Par défaut
    Désolé pour cette réponse un peu tardive.
    Voici un exemple de code qui, chez moi, crée un petit tableau dans un document odt et met la première ligne en gras et modifie la largeur des colonnes

    L'idée générale, pour appliquer les styles, c'est
    - récupérer la zone avec un get(cellule, paragraphe ou autre)
    - appliquer le style
    - réaffecter la zone avec un set

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    from lpod.document import odf_new_document
    from lpod.style import odf_create_style
    from lpod.table import odf_create_table
     
     
    doc = odf_new_document('text')
    body = doc.get_body()
     
    cell_titre_style = odf_create_style('table-cell', area='text', weight='bold', size='13pt')
     
    col_0_style = odf_create_style('table-column', width='3cm')
    col_1_style = odf_create_style('table-column', width='7cm')
     
    doc.insert_style(col_0_style, automatic=True)
    doc.insert_style(col_1_style, automatic=True)
    doc.insert_style(cell_titre_style, automatic=True)
     
    table = odf_create_table(u"Table1", width=2, height=3)
     
    for i in range(3):
        row = table.get_row(i)
        row.set_values([j + 2 for j in range(2)])
        if i == 0:
            for j in range(2):
                c=row.get_cell(j)
                c.set_style(cell_titre_style)
                row.set_cell(j, c)
        table.set_row(i, row)
     
    col = table.get_column(0)
    col.set_style(col_0_style)
    table.set_column(0, col)
     
    col = table.get_column(1)
    col.set_style(col_1_style)
    table.set_column(1, col)
     
    body.append(table)
    doc.save("lpod_test.odt")

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci pour votre réponse !
    Je n'avais pas encore trouvé la solution, même si en relisant les exemples de la documentation et à la lumière de votre explication il apparaît que ce soit la démarche à suivre.
    Pour le moment, j'ai une urgence sur un autre projet, je m'excuse de ne pas avoir répondu tout de suite, je vais trouver un peu de temps pour essayer votre exemple et faire un petit retour !

    Merci, bonne journée

    Audric

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    j'ai pu mettre en application le changement de style d'une cellule et cela fonctionne ! J'ai essayé de manière un peu différente sans passer par le méthode "set" des cellules :
    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
    26
    27
    28
    29
    30
     
    # Création du style
    cell_titre_style = lpod.style.odf_create_style('table-cell',
    			name='StyleCellTitre',
    			display_name='StyleCellTitre',
                         )
    # Modification des propriétés du style
    cell_titre_style.set_properties(area='text',weight='bold',size='13pt') 
    # Ajout du style au document            
    o_fichier_remise.insert_style(cell_titre_style)
     
    # Liste des libellés ie la première ligne du tableau
    c_libelles = [u"Montant",u"Banque Tirée et lieu de payement Tireur",u"Tireur",
    		   u"N° du chèque",u"Cours"]
     
    # Création du tableau
    tab_cheques_odf = lpod.table.odf_create_table(u"liste_cheque")
    # Création de la 1er ligne du tableau qui contient le titre des colonnes
    ligne_intitule = lpod.table.odf_create_row()	
    for libelle in c_libelles :
            # Création d'une cellule
    	cell_courante = lpod.table.odf_create_cell(libelle)
    	# Assignation d'un style à la cellule
            cell_courante.set_style('StyleCellTitre')
    	# ajout de la cellule à la ligne
            ligne_intitule.append(cell_courante)
     
    # Ajout de la ligne au tableau		
    tab_cheques_odf.append_row(ligne_intitule)
    etc...
    Mais, je n'arrive toujours pas à assigner un type , par exemple "currency", à une cellule. Même "float" ne fonctionne pas, une fois le document ouvert sous libreoffice 3 le type des cellules reste à texte.

    Merci de votre aide !

  5. #5
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    418
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 418
    Points : 828
    Points
    828
    Par défaut
    Je n'ai pas non plus réussi à mettre un type de données dans des cellules...
    Peut-être pouvez-vous poser directement la question par chat aux développeurs qui sont plutôt réactifs.


    Une fois le problème résolu, poster la réponse ici serait bienvenu.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci pour le lien.

    Je n'ai toujours pas réussi à assigner un type à une cellule.

    J'ai pourtant essayer de le faire par copie, en copiant un tableau entier d'un fichier à un autre. Même si les cellules sont de type monnaie dans le tableau d'origine, elles ne le sont plus dans le tableau destination.
    En comparant les propriétés de chacune des cellules (source et destination) je n'ai pas vu de différence.

    Je vais essayer de regarder les spécifications du format pour savoir comment faire car il me semble que ce n'est pas aussi simple que de mettre à jour les propriété des cellules.

    Je n'ai pas accès à l'IRC depuis le bureau...

    Merci de votre aide.

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Lpod Python
    Quelqu'un peux m'indiquer un lien vers un site qui présente plus d'informations sur les mises en forme Lpod tel que : les espacements , les grand titre , page de garde et autre .

    Merci d'avance

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/11/2005, 14h18
  2. [TDbGrid] Comment modifier la largeur des colonnes ?
    Par colorid dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/11/2005, 18h47
  3. [TRichEdit] Comment modifier le style d'une sélection ?
    Par PpPool dans le forum Composants VCL
    Réponses: 2
    Dernier message: 15/11/2005, 10h16
  4. [ThemeEngine] Comment modifier la langue des boites de dialogue ?
    Par piloumoi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 15/08/2005, 11h35
  5. Comment modifier l'affichage des objets cachés de Windows ?
    Par maximdus dans le forum API, COM et SDKs
    Réponses: 23
    Dernier message: 23/07/2005, 11h45

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