Cómo dar estilo a celdas con Aspose.Cells FOSS en Python

Cómo dar estilo a celdas con Aspose.Cells FOSS en Python

Aspose.Cells FOSS for Python te permite aplicar estilos de fuente y rellenos de fondo a celdas individuales usando el cell.style.font y cell.style.fill APIs. Los colores se expresan como 8-digit AARRGGBB hex strings; por ejemplo "FFFF0000" para rojo opaco, sin # prefijo. Todo el estilo se realiza en puro Python sin dependencia de Microsoft Excel ni de ninguna biblioteca de renderizado externa.

¿Por qué dar estilo a celdas con Aspose.Cells FOSS?

  1. No se requiere Excel: El formato se ejecuta completamente en Python en cualquier OS.
  2. Modelo de color consistente: Una única cadena de 8 dígitos AARRGGBB cubre el color de fuente y el color de relleno con el mismo formato.
  3. Nombres de propiedades legibles: bold, italic, underline, strikethrough: no is_ prefijo para recordar.
  4. Objetos de fuente reutilizables: Crear un Font instancia una vez y aplícala a muchas celdas para una marca consistente.

Guía paso a paso

Paso 1: Instale Aspose.Cells FOSS para Python

pip install aspose-cells-foss

No se requieren paquetes del sistema adicionales. Importa las clases que necesites de aspose.cells_foss:

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

Paso 2: Establecer el nombre y tamaño de la fuente

Accede a una celda a través de ws.cells["address"] y escribe en cell.style.font.name y 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")

La fuente predeterminada es Calibri a 11pt. Cualquier nombre de fuente disponible en el sistema donde se abrirá el archivo puede usarse; especificar una fuente que no esté instalada no produce un error, pero puede renderizarse con una fuente de respaldo cuando se abra el archivo.


Paso 3: Establecer el color de la fuente usando una cadena hexadecimal AARRGGBB

Los colores de fuente se establecen con un 8-digit hexadecimal string en AARRGGBB orden (Alfa, Rojo, Verde, Azul). Haga no incluya un # prefijo.

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

Referencia de colores AARRGGBB comunes:

Colorcadena AARRGGBBNotas
NegroFF000000Color de fuente predeterminado
BlancoFFFFFFFFUsar en fondos oscuros
RojoFFFF0000Texto de alerta o resaltado
AzulFF0000FFEnlaces o énfasis
VerdeFF00FF00Valores positivos o éxito
NaranjaFFFF8000Texto de advertencia
GrisFF808080Texto atenuado o deshabilitado
Azul marinoFF1E64C8Azul corporativo / de marca

Los dos primeros dígitos hexadecimales son el canal alfa. Use FF para opaco total. Los valores por debajo FF producen resultados semitransparentes en los renderizadores que admiten mezcla alfa.


Paso 4: Aplicar negrita, cursiva, subrayado y tachado

Establezca cada atributo directamente como un booleano. Los nombres de las propiedades son bold, italic, underline, y strikethrough; haga no usar is_bold o is_italic (esos nombres no existen en la API FOSS y generarán 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")

Las cuatro banderas predeterminadas son False. Pueden combinarse libremente en la misma celda.


Paso 5: Establecer un color de relleno de fondo sólido

Usa cell.style.fill.set_solid_fill("AARRGGBB") para aplicar un relleno de fondo. El formato de color es la misma cadena hexadecimal de 8 dígitos AARRGGBB que el color de fuente.

Para eliminar un relleno por completo, llama a 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() y set_no_fill() son mutuamente excluyentes; llamar a una sobrescribe a la otra en la misma celda.


Paso 6: Combinar múltiples estilos en una celda

Puede encadenar cualquier número de propiedades de estilo en la misma referencia de celda. No hay límite en la cantidad de atributos de estilo que se pueden establecer antes de guardar.

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

Esto produce una etiqueta blanca, en negrita, de 16 pt Arial sobre un fondo azul marino, un patrón común para los encabezados de columna.


Paso 7: Utilizar el constructor Font para estilos reutilizables

El Font la clase puede instanciarse con todas sus propiedades en una sola llamada, y luego asignarse a múltiples celdas. Esto es útil cuando deseas un estilo de casa consistente aplicado a muchas celdas sin repetir las mismas asignaciones de propiedades.

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 predeterminados del constructor Font (todos los parámetros son opcionales):

ParámetroPredeterminado
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Ejemplo completo y funcional

El siguiente script autónomo crea un libro de trabajo con una fila de encabezado con estilo, filas de datos coloreadas y una celda de resumen que demuestra todas las API de estilo cubiertas arriba:

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 comunes

Formato de color incorrecto: usando #RRGGBB en lugar de AARRGGBB

Un # (p.ej. "#FF0000") o una cadena RGB de 6 dígitos no producirá el color esperado. La propiedad espera exactamente 8 hex digits with no prefix: "FFFF0000". Los dos primeros dígitos son el canal alfa; usa FF para totalmente opaco.

AttributeError: 'Font' object has no attribute 'is_bold'

La API FOSS usa bold, italic, underline, y strikethrough como los nombres de propiedad. El is_bold / is_italic la convención de nombres pertenece a una biblioteca diferente y no existe aquí. Reemplace cualquier is_bold referencia con bold.

Los cambios de estilo no son visibles después de guardar

Asegúrese de establecer las propiedades de estilo en el objeto celda antes de llamar a workbook.save(). Establecer una propiedad en una celda después de la llamada a save no tiene efecto en el archivo ya escrito. Si reutiliza una cell variable, confirme que aún se refiere a la dirección de celda correcta.

El relleno y la fuente en la misma celda entran en conflicto visualmente

No hay conflicto de API; siempre puedes establecer ambos cell.style.font.color y cell.style.fill.set_solid_fill() de forma independiente. Asegúrate de que el color del texto tenga suficiente contraste con el color de fondo. Texto blanco (FFFFFFFF) sobre un relleno oscuro como azul marino (FF1E64C8) es una combinación fiable.


Preguntas frecuentes

¿Cómo elimino un relleno de fondo y devuelvo una celda a sin relleno?

Llama a cell.style.fill.set_no_fill(). Esto elimina cualquier relleno sólido previamente establecido de la celda.

¿Cómo restablezco una celda a la fuente predeterminada (Calibri 11 pt negro)?

Vuelva a asignar los valores predeterminados explícitamente:

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, crea un Font() instancia sin argumentos (todos los valores predeterminados) y asígnala: cell.style.font = Font().

¿Puedo aplicar el mismo estilo de fuente a un rango de celdas en un bucle?

Sí. Itera sobre las direcciones de las celdas y establece las mismas propiedades en cada una. Si utilizas el Font constructor para crear un compartido Font objeto, asígnalo a cada celda con ws.cells[addr].style.font = my_font.

¿El estilo afecta a los valores o fórmulas de las celdas?

No. El estilo es metadata visual pura. cell.style.font y cell.style.fill no tocar .value o .formula.

¿Qué formatos de guardado preservan los estilos?

Los estilos se conservan completamente al guardar en SaveFormat.XLSX. El SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, y SaveFormat.MARKDOWN los formatos son formatos de texto plano o texto estructurado y no transportan información de estilo.


Recursos relacionados:

 Español