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?

23
demandé sur pnuts 2015-05-27 16:39:23

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.

25
répondu Charlie Clark 2018-01-21 21:41:59

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')))
5
répondu M T Head 2016-09-09 08:23:37

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.

2
répondu ldrg 2017-10-20 16:37:17