Python-remplir les cellules avec des couleurs en utilisant openpyxl
j'utilise actuellement openpyxl v2.2.2 pour Python 2.7 et je voulais mettre les couleurs aux cellules. J'ai utilisé les importations suivantes
import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
et voici le code que j'ai essayé d'utiliser:
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].style = redFill
mais j'obtiens l'erreur suivante:
Traceback (most recent call last)
self.font = value.font.copy()
AttributeError: 'PatternFill' object has no attribute 'font'
avez-vous une idée de la façon de définir la cellule A1 (ou toute autre cellule) avec des couleurs en utilisant openpyxl?
3 réponses
je crois que le problème est que vous essayez d'attribuer un objet fill à un style.
ws['A1'].fill = redFill
devrait fonctionner correctement.
Cela a fonctionné pour moi. Ils ont changé les choses et la plupart de l'aide que vous voyez sur internet est pour les versions plus anciennes de la bibliothèque openpyxl de ce que je vois.
# Change background color
xls_cell.style = Style(fill=PatternFill(patternType='solid',
fill_type='solid',
fgColor=Color('C4C4C4')))
L'API pour les styles a changé une fois de plus. Ce qui a fonctionné pour moi était
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
my_fill = openpyxl.styles.fills.PatternFill(patternType='solid', fgColor=my_red)
cell.fill = my_fill
la couleur est une couleur alpha RGB hexadécimale. Vous pouvez le passer en tant que 'rrggbb'
par défaut avec un alpha de 00 ou spécifier l'alpha 'aarrggbb'
. Un tas de couleurs sont définies comme constantes dans openpyxl.styles.colors
si vous avez besoin de saisir rapidement.