Ответ 1
Я считаю, что проблема заключается в том, что вы пытаетесь присвоить объект заполнения стилю.
ws['A1'].fill = redFill
должен работать нормально.
В настоящее время я использую openpyxl v2.2.2 для Python 2.7, и мне нужно установить цвета в ячейки. Я использовал следующий импорт
import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell
и следующий код, который я пытался использовать:
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].style = redFill
но я получаю следующую ошибку:
Traceback (most recent call last)
self.font = value.font.copy()
AttributeError: 'PatternFill' object has no attribute 'font'
Любая идея о том, как установить ячейку A1 (или любые другие ячейки) с цветами с помощью openpyxl?
Я считаю, что проблема заключается в том, что вы пытаетесь присвоить объект заполнения стилю.
ws['A1'].fill = redFill
должен работать нормально.
Это сработало для меня. Они изменили ситуацию, и большая часть помощи, которую вы видите в Интернете, предназначена для старых версий библиотеки openpyxl из того, что я вижу.
# Change background color
xls_cell.style = Style(fill=PatternFill(patternType='solid',
fill_type='solid',
fgColor=Color('C4C4C4')))
API для стилей снова изменился. То, что сработало для меня, было
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
my_fill = openpyxl.styles.fills.PatternFill(patternType='solid', fgColor=my_red)
cell.fill = my_fill
Цвет - это шестигранный цвет альфа-RGB. Вы можете передать его как 'rrggbb'
с по умолчанию альфа 00 или указать альфу с 'aarrggbb'
. Букет цветов определяется как константы в openpyxl.styles.colors
, если вам нужно быстро схватить его.
в питоне 3.x
wb = openpyxl.Workbook()
ws = wb.active
redFill = PatternFill(start_color='FFFF0000',
end_color='FFFF0000',
fill_type='solid')
ws['A1'].fill = redFill
это работает, но я не знаю, в Python 2.x я надеюсь работать
просто положи ws['A1'].fill=redFill