Как стилизовать ячейки с помощью 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?
- 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
Цвета шрифтов задаются с помощью 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; делайте не используйте 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.")Это создаёт белую, полужирную метку Arial 16 pt на темно‑синем фоне, типичный шаблон для заголовков столбцов.
Шаг 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.")Значения по умолчанию конструктора Font (все параметры являются необязательными):
| Параметр | По умолчанию |
|---|---|
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 hex digits with no prefix: "FFFF0000". Первые две цифры — альфа‑канал; используйте FF для полной непрозрачности.
AttributeError: 'Font' object has no attribute 'is_bold'
API FOSS использует bold, italic, underline, и strikethrough как имена свойств. The 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 11 пт чёрный)?
Явно переопределите значения по умолчанию:
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().
Могу ли я применить один и тот же стиль шрифта к диапазону ячеек в цикле?
Да. Пройдитесь по адресам ячеек и задайте одинаковые свойства для каждой. Если вы используете 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 форматы являются простыми текстовыми или структурированными текстовыми форматами и не содержат информацию о стиле.
Связанные ресурсы:
- Aspose.Cells FOSS for Python: Developer Guide
- Операции с электронными таблицами
- Как загружать электронные таблицы в Python
- Как создавать диаграммы в Python
- Справочник API: Font, Fill, Style
- Обзор продукта: Сводка функций и возможностей
- Блог: Представляем Aspose.Cells FOSS: Обзор библиотеки и быстрое начало