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

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

Aspose.Cells FOSS for Python ви позволява да прилагате стилове на шрифт и фон запълнения към отделни клетки, използвайки cell.style.font и cell.style.fill API-та. Цветовете се изразяват като 8-digit AARRGGBB hex strings; например "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 шестнадесетичен низ

Цветовете на шрифта се задават с an 8-digit hexadecimal string в AARRGGBB ред (Alpha, Red, Green, Blue). Направете не включи # prefix.

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Бележки
ЧеренFF000000Цвят на шрифта по подразбиране
БялFFFFFFFFИзползвайте върху тъмни фонове
ЧервенFFFF0000Текст за предупреждение или акцент
СинFF0000FFВръзки или акцент
ЗеленоFF00FF00Положителни стойности или успех
ОранжевоFFFF8000Текст за предупреждение
СивоFF808080Затъмнен или деактивиран текст
ТъмносинFF1E64C8Корпоративен / бранд син

Първите два шестнадесетични знака са алфа каналът. Използвайте FF за напълно непрозрачен. FF произвеждат полупрозрачни резултати в рендеръри, които поддържат алфа смесване.


Стъпка 4: Прилагане на удебеляване, курсив, подчертаване и задраскване

Задайте всеки атрибут директно като булев. Имената на свойствата са bold, italic, underline, и strikethrough; изпълнете не използвайте is_bold или is_italic (тези имена не съществуват в API‑то на FOSS и ще предизвикат 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 за многократна употреба на стилове

Това 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 hex digits with no prefix: "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(). Задаването на свойство на клетка след извикването на 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

Алтернативно, създайте a Font() екземпляр без аргументи (всички по подразбиране) и го присвоете: cell.style.font = Font().

Мога ли да приложа същия стил на шрифт към диапазон от клетки в цикъл?

Да. Обхождайте адресите на клетките и задайте същите свойства на всяка. Ако използвате the 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 формати са plain-text или structured-text формати и не съдържат информация за стилизация.


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

 Български