Как да стилизирате клетки с Aspose.Cells FOSS в Python
Aspose.Cells FOSS for Python ви позволява да прилагате стилове на шрифт и запълване на фон към отделни клетки, използвайки API‑те cell.style.font и cell.style.fill. Цветовете се изразяват като 8-цифрови AARRGGBB шестнадесетични низове; например "FFFF0000" за непрозрачен червен, без префикс #. Цялото стилизиране се извършва в чист Python без зависимост от Microsoft Excel или каквато и да е външна библиотека за рендериране.
Защо да стилизирате клетки с Aspose.Cells FOSS?
- Не е необходим Excel: Форматирането се изпълнява изцяло в Python на всяка ОС.
- Последователен цветови модел: Едно 8‑цифрово AARRGGBB низ покрива цвят на шрифта и цвят на запълване със същия формат.
- Четливи имена на свойства:
bold,italic,underline,strikethrough: без префиксis_за запомняне. - Повторно използваеми обекти Font: Създайте един екземпляр
Fontи го приложете към множество клетки за последователен брандинг.
Ръководство стъпка‑по‑стъпка
Стъпка 1: Инсталирайте Aspose.Cells FOSS за Python
pip install aspose-cells-fossНе са необходими допълнителни системни пакети. Импортирайте необходимите класове от aspose.cells_foss:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormatСтъпка 2: Задайте име на шрифт и размер
Достъпете клетка чрез ws.cells["address"] и запишете в cell.style.font.name и cell.style.font.size.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Styled Header"
cell = ws.cells["A1"]
cell.style.font.name = "Arial"
cell.style.font.size = 14
workbook.save("styled.xlsx")Шрифтът по подразбиране е Calibri с 11pt. Всяко име на шрифт, налично в системата, където файлът ще бъде отворен, може да се използва; задаването на шрифт, който не е инсталиран, не предизвиква грешка, но може да се визуализира с резервен шрифт, когато файлът се отвори.
Стъпка 3: Задаване на цвят на шрифта с помощта на AARRGGBB Hex String
Цветовете на шрифта се задават с 8-цифрен шестнадесетичен низ в AARRGGBB ред (Алфа, Червено, Зелено, Синьо). Не включвайте # префикс.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Red text"
ws.cells["A1"].style.font.color = "FFFF0000" # opaque red
ws.cells["A2"].value = "Blue text"
ws.cells["A2"].style.font.color = "FF0000FF" # opaque blue
ws.cells["A3"].value = "Green text"
ws.cells["A3"].style.font.color = "FF00FF00" # opaque green
workbook.save("colored_text.xlsx")Обща AARRGGBB цветова референция:
| Цвят | AARRGGBB string | Бележки |
|---|---|---|
| Black | FF000000 | Цвят по подразбиране за шрифт |
| White | FFFFFFFF | Използва се върху тъмни фонове |
| Red | FFFF0000 | Текст за предупреждение или акцент |
| Blue | FF0000FF | Връзки или акцент |
| Green | FF00FF00 | Положителни стойности или успех |
| Orange | FFFF8000 | Текст за предупреждение |
| Gray | FF808080 | Затъмнен или деактивиран текст |
| Navy | FF1E64C8 | Корпоративен / фирмен син |
Първите две шестнадесетични цифри са алфа каналът. Използвайте FF за напълно непрозрачен. Стойностите под FF дават полупрозрачни резултати в рендеръри, които поддържат алфа смесване.
Стъпка 4: Прилагане на удебеляване, курсив, подчертаване и задраскване
Задайте всеки атрибут директно като булев. Имената на свойствата са bold, italic, underline и strikethrough; не използвайте is_bold или is_italic (тези имена не съществуват в FOSS API и ще предизвикат AttributeError).
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Bold"
ws.cells["A1"].style.font.bold = True
ws.cells["A2"].value = "Italic"
ws.cells["A2"].style.font.italic = True
ws.cells["A3"].value = "Underline"
ws.cells["A3"].style.font.underline = True
ws.cells["A4"].value = "Strikethrough"
ws.cells["A4"].style.font.strikethrough = True
ws.cells["A5"].value = "Bold + Italic"
ws.cells["A5"].style.font.bold = True
ws.cells["A5"].style.font.italic = True
workbook.save("font_styles.xlsx")Всички четири флага по подразбиране са False. Те могат да се комбинират свободно в една и съща клетка.
Стъпка 5: Задайте плътен цвят за запълване на фона
Използвайте cell.style.fill.set_solid_fill("AARRGGBB"), за да приложите запълване на фон. Форматът на цвета е същият 8‑цифрен AARRGGBB шестнадесетичен низ като цвят на шрифта.
За да премахнете запълването изцяло, извикайте cell.style.fill.set_no_fill().
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"].value = "Navy background"
ws.cells["A1"].style.fill.set_solid_fill("FF1E64C8") # opaque navy blue
ws.cells["A2"].value = "Light yellow background"
ws.cells["A2"].style.fill.set_solid_fill("FFFFFFCC") # pale yellow
ws.cells["A3"].value = "No fill"
ws.cells["A3"].style.fill.set_no_fill() # remove any fill
workbook.save("cell_fills.xlsx")set_solid_fill() и set_no_fill() са взаимно изключващи се; извикването на едното отменя другото в същата клетка.
Стъпка 6: Комбиниране на множество стилове в една клетка
Можете да свържете произволен брой свойства на стила към една и съща референция на клетка. Няма ограничение за броя на атрибутите на стила, зададени преди запазване.
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["B2"].value = "Branded Header"
cell = ws.cells["B2"]
##Font
cell.style.font.name = "Arial"
cell.style.font.size = 16
cell.style.font.bold = True
cell.style.font.color = "FFFFFFFF" # white text
##Background
cell.style.fill.set_solid_fill("FF1E64C8") # navy fill
workbook.save("branded_header.xlsx")
print("Branded header cell saved.")Това създава бял, удебелен, 16pt Arial етикет върху тъмносин фон, често срещан модел за заглавия на колони.
Стъпка 7: Използвайте Font Constructor за многократна употреба на стилове
Класът Font може да бъде инстанциран със всички негови свойства в едно извикване, след което да бъде присвоен на множество клетки. Това е полезно, когато искате последователен фирмен стил, приложен върху много клетки, без да се повтарят едни и същи назначения на свойства.
from aspose.cells_foss import Workbook, Font
workbook = Workbook()
ws = workbook.worksheets[0]
##Define a reusable heading font
heading_font = Font(
name="Arial",
size=14,
color="FF1E64C8", # navy
bold=True,
italic=False,
underline=False,
strikethrough=False
)
##Define a reusable body font
body_font = Font(
name="Calibri",
size=11,
color="FF000000", # black (default)
bold=False,
italic=False,
underline=False,
strikethrough=False
)
##Apply heading font to header row
headers = ["Product", "SKU", "Price", "Stock"]
for col, header in enumerate(headers):
addr = f"{chr(65 + col)}1"
ws.cells[addr].value = header
ws.cells[addr].style.font = heading_font
ws.cells[addr].style.fill.set_solid_fill("FFE8EFF9") # light blue tint
##Apply body font to data rows
data = [
("Widget A", "WGT-001", 9.99, 150),
("Widget B", "WGT-002", 14.99, 87),
("Widget C", "WGT-003", 4.49, 320),
]
for row_idx, (name, sku, price, stock) in enumerate(data, start=2):
ws.cells[f"A{row_idx}"].value = name
ws.cells[f"B{row_idx}"].value = sku
ws.cells[f"C{row_idx}"].value = price
ws.cells[f"D{row_idx}"].value = stock
for col in "ABCD":
ws.cells[f"{col}{row_idx}"].style.font = body_font
workbook.save("product_table.xlsx")
print("Product table with reusable fonts saved.")Стойности по подразбиране за конструктора на шрифт (всички параметри са незадължителни):
| Параметър | По подразбиране |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
Пълен работен пример
Следният самостоятелен скрипт създава работна книга със стилизиран заглавен ред, оцветени редове с данни и обобщаваща клетка, демонстрираща всички API за стилизиране, разгледани по‑горе:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormat
workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Report"
##--- Header row (bold, white text on navy background) ---
headers = ["Region", "Q1", "Q2", "Q3", "Q4", "Total"]
for col, text in enumerate(headers):
addr = f"{chr(65 + col)}1"
ws.cells[addr].value = text
ws.cells[addr].style.font.name = "Arial"
ws.cells[addr].style.font.size = 12
ws.cells[addr].style.font.bold = True
ws.cells[addr].style.font.color = "FFFFFFFF" # white
ws.cells[addr].style.fill.set_solid_fill("FF1E64C8") # navy
##--- Data rows ---
data = [
("North", 42000, 47500, 53000, 61000),
("South", 31000, 28500, 35000, 39000),
("East", 55000, 62000, 58000, 71000),
("West", 27000, 30000, 33000, 41000),
]
for row_idx, (region, q1, q2, q3, q4) in enumerate(data, start=2):
ws.cells[f"A{row_idx}"].value = region
ws.cells[f"B{row_idx}"].value = q1
ws.cells[f"C{row_idx}"].value = q2
ws.cells[f"D{row_idx}"].value = q3
ws.cells[f"E{row_idx}"].value = q4
# Total formula
ws.cells[f"F{row_idx}"] = Cell(None, f"=SUM(B{row_idx}:E{row_idx})")
# Alternate row shading
if row_idx % 2 == 0:
for col in "ABCDEF":
ws.cells[f"{col}{row_idx}"].style.fill.set_solid_fill("FFE8EFF9")
##--- Italic note in a footer cell ---
ws.cells["A7"].value = "All values in USD"
ws.cells["A7"].style.font.italic = True
ws.cells["A7"].style.font.color = "FF808080" # gray
ws.cells["A7"].style.font.size = 9
##--- Strikethrough on a deprecated label ---
ws.cells["A8"].value = "Old metric (deprecated)"
ws.cells["A8"].style.font.strikethrough = True
ws.cells["A8"].style.font.color = "FF808080"
workbook.save("sales_report_styled.xlsx", SaveFormat.XLSX)
print("Styled sales report saved.")Чести проблеми
Грешен формат на цвета: използване на #RRGGBB вместо AARRGGBB
Водещият # (например "#FF0000") или 6‑цифрен RGB низ няма да даде очаквания цвят. Свойството изисква точно 8 шестнадесетични цифри без представка: "FFFF0000". Първите две цифри са алфа каналът; използвайте FF за напълно непрозрачен.
AttributeError: 'Font' object has no attribute 'is_bold'
FOSS API използва bold, italic, underline и strikethrough като имена на свойства. Конвенцията за именуване is_bold / is_italic принадлежи на различна библиотека и не съществува тук. Заменете всяка препратка is_bold с bold.
Стиловите промени не се виждат след запазване
Уверете се, че задавате стиловите свойства на обекта на клетката преди извикването на workbook.save(). Задаването на свойство на клетка след извикването за запазване няма ефект върху вече записания файл. Ако преизползвате променлива cell, уверете се, че тя все още се отнася до правилния адрес на клетката.
Запълването и шрифтът в една и съща клетка визуално влизат в конфликт
Няма конфликт в API; винаги можете да зададете както cell.style.font.color, така и cell.style.fill.set_solid_fill() независимо. Уверете се, че цветът на текста има достатъчен контраст спрямо цвета на фона. Бял текст (FFFFFFFF) върху тъмен запълващ цвят, като например тъмносин (FF1E64C8), е надеждна комбинация.
Често задавани въпроси
Как да премахна запълването на фона и върна клетката към състояние без запълване?
Извикайте cell.style.fill.set_no_fill(). Това премахва всяко предварително зададено плътно запълване от клетката.
Как да възстановя клетка към шрифта по подразбиране (Calibri 11pt черен)?
Присвояване отново на стойностите по подразбиране изрично:
cell.style.font.name = "Calibri"
cell.style.font.size = 11
cell.style.font.color = "FF000000"
cell.style.font.bold = False
cell.style.font.italic = False
cell.style.font.underline = False
cell.style.font.strikethrough = FalseАлтернативно, създайте инстанция Font() без аргументи (всички по подразбиране) и я присвоете: cell.style.font = Font().
Мога ли да приложа същия стил на шрифт към диапазон от клетки в цикъл?
Да. Итерирайте през адресите на клетките и задайте същите свойства на всяка. Ако използвате конструктора Font за създаване на споделен Font обект, присвоете го на всяка клетка с ws.cells[addr].style.font = my_font.
Влияе ли стилизирането върху стойностите на клетките или формулите?
Не. Стайлингът е чисто визуални метаданни. cell.style.font и cell.style.fill не засягат .value или .formula.
Кои формати за запазване запазват стиловете?
Стиловете се запазват напълно при запазване в SaveFormat.XLSX. Форматите SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON и SaveFormat.MARKDOWN са формати за чист текст или структуриран текст и не съдържат информация за стилизация.
Свързани ресурси:
- Aspose.Cells FOSS за Python: Ръководство за разработчици
- Операции с електронни таблици
- Как да заредим електронни таблици в Python
- Как да създадем диаграми в Python
- API справка: Шрифт, Запълване, Стил
- Общ преглед на продукта: Обобщение на функциите и възможностите
- Блог: Представяне на Aspose.Cells FOSS: Преглед на библиотеката и бърз старт