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 № 1Uważ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ć.