Подтвердить что ты не робот

Заполните ячейки цветами, используя openpyxl?

В настоящее время я использую 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?

4b9b3361

Ответ 1

Я считаю, что проблема заключается в том, что вы пытаетесь присвоить объект заполнения стилю.

ws['A1'].fill = redFill должен работать нормально.

Ответ 2

Это сработало для меня. Они изменили ситуацию, и большая часть помощи, которую вы видите в Интернете, предназначена для старых версий библиотеки openpyxl из того, что я вижу.

# Change background color 
xls_cell.style = Style(fill=PatternFill(patternType='solid',
                                        fill_type='solid', 
                                        fgColor=Color('C4C4C4')))

Ответ 3

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, если вам нужно быстро схватить его.

Ответ 4

в питоне 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