/ / python - wypełnij komórki kolorami używając openpyxl - python, openpyxl

python - wypełnij komórki kolorami używając openpyxl - python, openpyxl

Obecnie używam openpyxl v2.2.2 dla Pythona 2.7 i chciałem ustawić kolory dla komórek. Użyłem następujących importów

import openpyxl,
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles import colors
from openpyxl.cell import Cell

a oto kod, który próbowałem użyć:

wb = openpyxl.Workbook()
ws = wb.active

redFill = PatternFill(start_color="FFFF0000",
end_color="FFFF0000",
fill_type="solid")

ws["A1"].style = redFill

ale pojawia się następujący błąd:

Traceback (most recent call last)
self.font = value.font.copy()
AttributeError: "PatternFill" object has no attribute "font"

Masz pomysł, jak ustawić komórkę A1 (lub dowolne inne komórki) za pomocą kolorów przy użyciu openpyxl?

Odpowiedzi:

24 dla odpowiedzi № 1

Uważam, że problem polega na tym, że próbujesz przypisać obiekt wypełnienia do stylu.

ws["A1"].fill = redFill powinien działać dobrze.


5 dla odpowiedzi nr 2

To działało dla mnie. Zmieniły się rzeczy i większość pomocy, którą widzisz w Internecie, dotyczy starszych wersji biblioteki openpyxl z tego, co widzę.

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

2 dla odpowiedzi nr 3

Interfejs API stylów został ponownie zmieniony. To, co zadziałało, było dla mnie

my_red = openpyxl.styles.colors.Color(rgb="00FF0000")
my_fill = openpyxl.styles.fills.PatternFill(patternType="solid", fgColor=my_red)
cell.fill = my_fill

Kolor jest kolorem hexa RGB. Możesz przekazać to jako "rrggbb" z domyślną alfa 00 lub określ alfa za pomocą "aarrggbb". Pęczek kolorów jest definiowany jako stałe w openpyxl.styles.colors jeśli potrzebujesz szybko go złapać.