Como Estilizar Células com Aspose.Cells FOSS em Python
Aspose.Cells FOSS for Python permite aplicar estilos de fonte e preenchimentos de fundo a células individuais usando o cell.style.font e cell.style.fill APIs. As cores são expressas como 8-digit AARRGGBB hex strings; por exemplo "FFFF0000" para vermelho opaco, sem # prefixo. Toda a estilização é feita em puro Python sem dependência do Microsoft Excel ou de qualquer biblioteca de renderização externa.
Por que Estilizar Células com Aspose.Cells FOSS?
- Não é necessário Excel: A formatação é executada totalmente em Python em qualquer SO.
- Modelo de cor consistente: Uma única string de 8 dígitos AARRGGBB cobre a cor da fonte e a cor de preenchimento com o mesmo formato.
- Nomes de propriedades legíveis:
bold,italic,underline,strikethrough: nãois_prefixo para lembrar. - Objetos de Fonte reutilizáveis: Crie um
Fontinstância uma vez e aplique-a a várias células para uma identidade visual consistente.
Guia passo a passo
Etapa 1: Instale Aspose.Cells FOSS para Python
pip install aspose-cells-fossNenhum pacote de sistema adicional é necessário. Importe as classes que você precisa de aspose.cells_foss:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormatEtapa 2: Definir Nome e Tamanho da Fonte
Acesse uma célula através de ws.cells["address"] e escreva em cell.style.font.name e 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")A fonte padrão é Calibri a 11pt. Qualquer nome de fonte disponível no sistema onde o arquivo será aberto pode ser usado; especificar uma fonte que não está instalada não causa erro, mas pode ser renderizada com uma fonte de fallback quando o arquivo for aberto.
Etapa 3: Definir Cor da Fonte Usando uma String Hexadecimal AARRGGBB
As cores das fontes são definidas com um 8-digit hexadecimal string em AARRGGBB ordem (Alfa, Vermelho, Verde, Azul). Faça não inclua um # prefixo.
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")Referência comum de cores AARRGGBB:
| Cor | string AARRGGBB | Observações |
|---|---|---|
| Preto | FF000000 | Cor padrão da fonte |
| Branco | FFFFFFFF | Use em fundos escuros |
| Vermelho | FFFF0000 | Texto de alerta ou destaque |
| Azul | FF0000FF | Links ou ênfase |
| Verde | FF00FF00 | Valores positivos ou sucesso |
| Laranja | FFFF8000 | Texto de aviso |
| Cinza | FF808080 | Texto atenuado ou desativado |
| Marinho | FF1E64C8 | Azul corporativo / de marca |
Os dois primeiros dígitos hexadecimais são o canal alfa. Use FF para totalmente opaco. Valores abaixo FF produzem resultados semitransparentes em renderizadores que suportam mesclagem alfa.
Etapa 4: Aplicar Negrito, Itálico, Sublinhado e Tachado
Defina cada atributo diretamente como um booleano. Os nomes das propriedades são bold, italic, underline, e strikethrough; faça não usar is_bold ou is_italic (esses nomes não existem na API FOSS e gerarão 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")Todas as quatro flags têm como padrão False. Elas podem ser combinadas livremente na mesma célula.
Etapa 5: Definir uma Cor de Preenchimento de Fundo Sólido
Use cell.style.fill.set_solid_fill("AARRGGBB") para aplicar um preenchimento de fundo. O formato de cor é a mesma string hexadecimal de 8 dígitos AARRGGBB usada para a cor da fonte.
Para remover um preenchimento completamente, chame 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() e set_no_fill() são mutuamente exclusivas; chamar uma sobrescreve a outra na mesma célula.
Etapa 6: Combinar Múltiplos Estilos em Uma Célula
Você pode encadear qualquer número de propriedades de estilo na mesma referência de célula. Não há limite para quantos atributos de estilo podem ser definidos antes de salvar.
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.")Isso produz um rótulo branco, em negrito, Arial 16pt, sobre um fundo azul-marinho, um padrão comum para cabeçalhos de coluna.
Etapa 7: Usar o Construtor Font para Estilos Reutilizáveis
O Font a classe pode ser instanciada com todas as suas propriedades em uma única chamada, e então atribuída a várias células. Isso é útil quando você deseja um estilo padrão consistente aplicado em muitas células sem repetir as mesmas atribuições de propriedades.
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.")Valores padrão do construtor Font (todos os parâmetros são opcionais):
| Parâmetro | Padrão |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
Exemplo Completo Funcional
O script autônomo a seguir cria uma planilha com uma linha de cabeçalho estilizada, linhas de dados coloridas e uma célula de resumo demonstrando todas as APIs de estilo abordadas acima:
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.")Problemas comuns
Formato de cor errado: usando #RRGGBB em vez de AARRGGBB
Um prefixo # (por exemplo. "#FF0000") ou uma string RGB de 6 dígitos não produzirá a cor esperada. A propriedade espera exatamente 8 hex digits with no prefix: "FFFF0000". Os dois primeiros dígitos são o canal alfa; use FF para totalmente opaco.
AttributeError: 'Font' object has no attribute 'is_bold'
A API FOSS usa bold, italic, underline, e strikethrough como os nomes das propriedades. O is_bold / is_italic convenção de nomenclatura pertence a uma biblioteca diferente e não existe aqui. Substitua qualquer is_bold referência por bold.
Alterações de estilo não visíveis após salvar
Certifique‑se de definir as propriedades de estilo no objeto célula antes de chamar workbook.save(). Definir uma propriedade em uma célula após a chamada de salvar não tem efeito no arquivo já escrito. Se você reutilizar um cell variável, confirme se ainda se refere ao endereço de célula correto.
Preenchimento e fonte na mesma célula entram em conflito visualmente
Não há conflito de API; você pode sempre definir ambos cell.style.font.color e cell.style.fill.set_solid_fill() independentemente. Certifique-se de que a cor do texto tenha contraste suficiente com a cor de fundo. Texto branco (FFFFFFFF) em um preenchimento escuro como azul-marinho (FF1E64C8) é uma combinação confiável.
Perguntas Frequentes
Como remover um preenchimento de fundo e devolver a célula sem preenchimento?
Chame cell.style.fill.set_no_fill(). Isso remove qualquer preenchimento sólido previamente definido da célula.
Como redefinir uma célula para a fonte padrão (Calibri 11pt preto)?
Reatribua os valores padrão explicitamente:
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 = FalseAlternativamente, crie um Font() instância sem argumentos (todos os padrões) e atribua-a: cell.style.font = Font().
Posso aplicar o mesmo estilo de fonte a um intervalo de células em um loop?
Sim. Itere sobre os endereços das células e defina as mesmas propriedades em cada uma. Se você usar o Font construtor para criar um compartilhado Font objeto, atribua-o a cada célula com ws.cells[addr].style.font = my_font.
A formatação afeta os valores ou fórmulas das células?
Não. A estilização é apenas metadados visuais. cell.style.font e cell.style.fill não toque .value ou .formula.
Quais formatos de salvamento preservam estilos?
Os estilos são totalmente preservados ao salvar para SaveFormat.XLSX. O SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, e SaveFormat.MARKDOWN os formatos são de texto simples ou de texto estruturado e não carregam informações de estilo.
Recursos Relacionados:
- Aspose.Cells FOSS for Python: Developer Guide
- Operações de Planilha
- Como carregar planilhas em Python
- Como criar gráficos em Python
- Referência da API: Fonte, Preenchimento, Estilo
- Visão geral do produto: Resumo de recursos e capacidades
- Blog: Apresentando Aspose.Cells FOSS: Visão geral da biblioteca e início rápido