Як стилізувати клітинки за допомогою 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. Повторно використовувані об’єкти шрифтів: Створити a 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

Кольори шрифту задаються за допомогою 8-digit hexadecimal string у AARRGGBB замовлення (Alpha, Red, Green, Blue). Зробіть не включити # префікс.

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

Перші два шістнадцяткові цифри — це альфа-канал. Використовуйте FF для повної непрозорості. Значення нижче FF створює напівпрозорі результати у рендерерах, які підтримують альфа‑змішування.


Крок 4: Застосувати жирний, курсив, підкреслення та перекреслення

Встановіть кожен атрибут безпосередньо як булевий. Імена властивостей: bold, italic, underline, і strikethrough; do не використовувати 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 для багаторазових стилів

The 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.")

Типові значення конструктора Font (всі параметри є необов’язковими):

ПараметрЗа замовчуванням
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'

API FOSS використовує bold, italic, underline, і strikethrough як імена властивостей. Це is_bold / is_italic правило іменування належить до іншої бібліотеки і тут не існує. Замініть будь‑яке is_bold посиланням bold.

Зміни стилю не видно після збереження

Переконайтеся, що ви встановлюєте властивості стилю на об’єкті клітини перед виклик workbook.save(). Встановлення властивості клітинки після виклику save не впливає на вже записаний файл. Якщо ви повторно використовуєте a 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 формати є plain-text або structured-text форматами і не містять інформації про стилі.


Пов’язані ресурси:

 Українська