python docx table de jeu de fond de la cellule et la couleur du texte
J'utilise python 2.7 avec docx et je voudrais changer l'arrière-plan et la couleur du texte des cellules de mon tableau sur la base de la condition.
Je ne pouvais pas trouver toutes les ressources utiles sur simple mise en forme de cellule
Des suggestions?
Edit 1
mon code
style_footer = "DarkList"
style_red = "ColorfulList"
style_yellow = "LightShading"
style_green = "MediumShading2-Accent6"
style_transperent = "TableNormal"
for a,rec in enumerate(data):
#V headinh se piše prvo polje iz table heada
document.add_heading(rec['tableHead'][0][0], level=1)
image_path = imageFolder + "\\" + slike[a]
document.add_picture(image_path, height=Inches(3.5))
#y += 28
#worksheet.insert_image( y, 1,imageFolder + "/" + slike[a])
for i, head in enumerate(rec['tableHead']):
table = document.add_table(rows=1, cols = len(head))
hdr_cells = table.rows[0].cells
for a in range(0,len(head)):
hdr_cells[a].text = head[a]
for a,body in enumerate(rec['tableData']):
row_cells = table.add_row().cells
for a in range(0,len(body)):
if body[a]['style'] == 'footer':
stil = style_footer
elif body[a]['style'] == 'red':
stil = style_red
elif body[a]['style'] == 'yellow':
stil = style_yellow
elif body[a]['style'] == 'green':
stil = style_green
else:
stil = style_transperent
row_cells[a].add_paragraph(body[a]['value'], stil)
document.save(wordDoc)
Toutes les cellules sont toujours les mêmes.
OriginalL'auteur Yebach | 2014-11-05
Vous devez vous connecter pour publier un commentaire.
Si vous voulez la couleur de remplissage d'une cellule spécifique dans un tableau, vous pouvez utiliser le code ci-dessous.
Par exemple, disons que vous avez besoin pour remplir la première cellule de la première ligne de votre tableau avec la couleur RVB 1F5C8B:
Maintenant, si vous souhaitez également remplir la deuxième cellule de la première ligne avec la même couleur, vous devez créer un nouvel élément
sinon, si vous utilisez le même élément comme ci-dessus le remplissage se déplacer sur et disparaîtra à partir de la première cellule...
...et ainsi de suite pour les autres cellules.
Source: https://groups.google.com/forum/#!topic/python-docx/-c3OrRHA3qo
OriginalL'auteur Nikos Tavoularis
Ce que nous avons trouvé est que, si vous faites de la cellule.add_paragraph('sometext', style_object), il permettra de conserver le paragraphe vide et ajouter un paragraphe supplémentaire avec le style, qui n'est pas idéal.
Ce que vous voulez faire est quelque chose comme:
Noter que le style est appliqué au point de ne pas la cellule, ce qui n'est pas l'idéal pour des couleurs d'arrière-plan (car il ne remplit pas l'entrée de la cellule si vous avez un peu de rembourrage. Je n'ai pas trouvé un moyen de contourner cela (sauf dans le cas où vous voulez que CHAQUE cellule pour avoir une couleur d'arrière-plan, vous pouvez appliquer un style de tableau.le style).
Aussi, assurez-vous que vos styles sont définis. Vous pouvez le vérifier
pour voir tous les styles. Vous pouvez définir de nouveaux styles et également charger un document modèle, avec des styles prédéfinis déjà.
OriginalL'auteur Apollo Data
Il ressemble plutôt à l'aide de la
cell.text = "Something"
méthode, vous devez utiliser lecell.add_paragraph("SomeText", a_style)
avec un style défini - probablement l'un des:Liste complète ici.
Si vous utilisez le “par défaut” modèle de document - dans le cas contraire, vous aurez à créer votre propre.
Pas actuellement, vous pouvez insérer un lien vers, ou même dans, un fichier xlsx ou vous pouvez analyser le xlxs contenu du fichier dans une table en utilisant xlrd pour obtenir les données.
mais encore que toutes les cellules soient de style?
Seulement si VOUS leur style que vous avez créé dans le document!
La bibliothèque doit-je utiliser. docx, win32. Je les ai décorées dans excel. J'ai juste besoin de copier mot. Quelle est la plus facile et la solution la plus rapide. Merci
OriginalL'auteur Steve Barnes