Как да стилизирате клетки с Aspose.Cells FOSS в Python

Как да стилизирате клетки с 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?

  1. Не е необходим Excel: Форматирането се изпълнява изцяло в Python на всяка ОС.
  2. Последователен цветови модел: Едно 8‑цифрово AARRGGBB низ покрива цвят на шрифта и цвят на запълване със същия формат.
  3. Четливи имена на свойства: bold, italic, underline, strikethrough: без префикс is_ за запомняне.
  4. Повторно използваеми обекти 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Бележки
BlackFF000000Цвят по подразбиране за шрифт
WhiteFFFFFFFFИзползва се върху тъмни фонове
RedFFFF0000Текст за предупреждение или акцент
BlueFF0000FFВръзки или акцент
GreenFF00FF00Положителни стойности или успех
OrangeFFFF8000Текст за предупреждение
GrayFF808080Затъмнен или деактивиран текст
NavyFF1E64C8Корпоративен / фирмен син

Първите две шестнадесетични цифри са алфа каналът. Използвайте 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"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Пълен работен пример

Следният самостоятелен скрипт създава работна книга със стилизиран заглавен ред, оцветени редове с данни и обобщаваща клетка, демонстрираща всички 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 са формати за чист текст или структуриран текст и не съдържат информация за стилизация.


Свързани ресурси:

 Български