Como Estilizar Células com Aspose.Cells FOSS em Python

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?

  1. Não é necessário Excel: A formatação é executada totalmente em Python em qualquer SO.
  2. 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.
  3. Nomes de propriedades legíveis: bold, italic, underline, strikethrough: não is_ prefixo para lembrar.
  4. Objetos de Fonte reutilizáveis: Crie um Font instâ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-foss

Nenhum pacote de sistema adicional é necessário. Importe as classes que você precisa de aspose.cells_foss:

from aspose.cells_foss import Workbook, Cell, Font, SaveFormat

Etapa 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:

Corstring AARRGGBBObservações
PretoFF000000Cor padrão da fonte
BrancoFFFFFFFFUse em fundos escuros
VermelhoFFFF0000Texto de alerta ou destaque
AzulFF0000FFLinks ou ênfase
VerdeFF00FF00Valores positivos ou sucesso
LaranjaFFFF8000Texto de aviso
CinzaFF808080Texto atenuado ou desativado
MarinhoFF1E64C8Azul 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âmetroPadrão
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

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 = False

Alternativamente, 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:

 Português