J'utilise actuellement openpyxl v2.2.2 pour Python 2.7 et je voulais définir des couleurs pour les 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'
Toute idée sur la façon de définir la cellule A1 (ou toute autre cellule) avec des couleurs en utilisant openpyxl?
Je pense que le problème est que vous essayez d'affecter un objet de remplissage à 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 destinée aux anciennes versions 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 encore changé. 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 RVB hexadécimale. Vous pouvez le transmettre comme 'rrggbb'
avec un alpha par défaut de 00 ou spécifier l’alpha avec 'aarrggbb'
. Un groupe de couleurs est défini en tant que constantes dans openpyxl.styles.colors
si vous devez en prendre un rapidement.
dans python 3.x
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].fill = redFill
cela fonctionne mais je ne sais pas dans python 2.x j'espère travailler juste mettre ws['A1'].fill=redFill