Com estilitzar cel·les amb Aspose.Cells FOSS a Python

Com estilitzar cel·les amb Aspose.Cells FOSS a Python

Aspose.Cells FOSS for Python et permet aplicar estils de lletra i emplenaments de fons a cèl·lules individuals utilitzant les API cell.style.font i cell.style.fill. Els colors s’expressen com a cadenes hexadecimals de 8 dígits AARRGGBB; per exemple "FFFF0000" per a vermell opac, sense prefix #. Tot l’estil es realitza en Python pur sense cap dependència de Microsoft Excel ni cap biblioteca externa de renderització.

Per què estilitzar cel·les amb Aspose.Cells FOSS?

  1. No cal Excel: El formatatge s’executa completament en Python a qualsevol SO.
  2. Model de color consistent: Una única cadena de 8 dígits AARRGGBB cobreix el color de la lletra i el color de farciment amb el mateix format.
  3. Noms de propietats llegibles: bold, italic, underline, strikethrough: cap prefix is_ per recordar.
  4. Objectes Font reutilitzables: Creeu una instància Font una vegada i apliqueu-la a moltes cel·les per a una marca coherent.

Guia pas a pas

Pas 1: Instal·la Aspose.Cells FOSS for Python

pip install aspose-cells-foss

No es requereixen paquets de sistema addicionals. Importa les classes que necessites des de aspose.cells_foss:

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

Pas 2: Establir el nom i la mida del tipus de lletra

Accedeix a una cel·la a través de ws.cells["address"] i escriu a cell.style.font.name i 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 font predeterminada és Calibri a 11pt. Qualsevol nom de font disponible al sistema on s’obrirà el fitxer pot ser utilitzat; especificar una font que no estigui instal·lada no genera cap error però pot renderitzar‑se amb una font de reserva quan s’obri el fitxer.


Pas 3: Estableix el color de la font utilitzant una cadena hexadecimal AARRGGBB

Els colors de la font es defineixen amb una cadena hexadecimal de 8 dígits en ordre AARRGGBB (Alfa, Vermell, Verd, Blau). No inclogueu un prefix #.

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 de colors AARRGGBB comuna:

ColorAARRGGBB stringNotes
NegreFF000000Color de lletra per defecte
BlancFFFFFFFFUtilitzar sobre fons foscos
VermellFFFF0000Text d’alerta o ressaltat
BlauFF0000FFEnllaços o èmfasi
VerdFF00FF00Valors positius o èxit
TaronjaFFFF8000Text d’advertència
GrisFF808080Text atenuat o desactivat
MaríFF1E64C8Blau corporatiu / de marca

Els dos primers dígits hexadecimals són el canal alfa. Useu FF per a totalment opac. Els valors per sota de FF produeixen resultats semitransparents en renderitzadors que admeten mescla alfa.


Pas 4: Aplica Negreta, Cursiva, Subratllat i Ratllat

Estableix cada atribut directament com a booleà. Els noms de les propietats són bold, italic, underline i strikethrough; no utilitzis is_bold o is_italic (aquests noms no existeixen a l’API FOSS i generaran 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")

Les quatre senyals per defecte són False. Es poden combinar lliurement a la mateixa cel·la.


Pas 5: Establir un color de farciment de fons sòlid

Utilitzeu cell.style.fill.set_solid_fill("AARRGGBB") per aplicar un emplenament de fons. El format del color és la mateixa cadena hexadecimal de 8 dígits AARRGGBB que el color de la font.

Per eliminar completament un farciment, crida 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() i set_no_fill() són mútuament exclusius; invocar-ne un sobrescriu l’altre a la mateixa cel·la.


Pas 6: Combina diversos estils en una cel·la

Podeu encadenar qualsevol nombre de propietats d’estil a la mateixa referència de cel·la. No hi ha cap límit al nombre d’atributs d’estil que es poden establir abans de desar.

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

Això produeix una etiqueta blanca, en negreta, de 16 punts Arial sobre un fons blau marí, un patró comú per a les capçaleres de columna.


Pas 7: Utilitzeu el Constructor de fonts per a estils reutilitzables

La classe Font es pot instanciar amb totes les seves propietats en una sola crida, i després assignar-la a diverses cel·les. Això és útil quan voleu aplicar un estil corporatiu coherent a moltes cel·les sense repetir les mateixes assignacions de propietats.

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

Valors per defecte del constructor de Font (tots els paràmetres són opcionals):

ParàmetrePer defecte
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Exemple complet de funcionament

El següent script autònom crea un llibre de treball amb una fila d’encapçalament amb estil, files de dades amb color i una cel·la de resum que demostra totes les API d’estil cobertes anteriorment:

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

Problemes comuns

Format de color incorrecte: s’està utilitzant #RRGGBB en lloc de AARRGGBB

Un prefix # (p. ex. "#FF0000") o una cadena RGB de 6 dígits no produirà el color esperat. La propietat espera exactament 8 dígits hexadecimals sense prefix: "FFFF0000". Els dos primers dígits són el canal alfa; utilitzeu FF per a totalment opac.

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

L’API FOSS utilitza bold, italic, underline i strikethrough com a noms de propietat. La convenció de nomenclatura is_bold / is_italic pertany a una biblioteca diferent i no existeix aquí. Substituïu qualsevol referència a is_bold per bold.

Els canvis d’estil no són visibles després de desar

Assegureu-vos que establiu les propietats d’estil a l’objecte cel·la abans de cridar workbook.save(). Establir una propietat en una cel·la després de la crida de desament no té cap efecte sobre el fitxer ja escrit. Si reutilitzeu una variable cell, confirmeu que encara fa referència a l’adreça de cel·la correcta.

El farciment i la font a la mateixa cel·la entren en conflicte visualment

No hi ha cap conflicte d’API; sempre podeu establir tant cell.style.font.color com cell.style.fill.set_solid_fill() de manera independent. Assegureu-vos que el color del text tingui un contrast suficient respecte al color de fons. El text blanc (FFFFFFFF) sobre un farciment fosc com el blau marí (FF1E64C8) és una combinació fiable.


Preguntes freqüents

Com elimino un farciment de fons i torno una cel·la a sense farciment?

Crida cell.style.fill.set_no_fill(). Això elimina qualsevol farciment sòlid establert prèviament de la cel·la.

Com puc restablir una cel·la al tipus de lletra per defecte (Calibri 11pt negre)?

Reassigna explícitament els valors per defecte:

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

Alternativament, creeu una instància Font() sense arguments (tots els valors per defecte) i assigneu‑la: cell.style.font = Font().

Puc aplicar el mateix estil de lletra a un interval de cel·les en un bucle?

Sí. Itera sobre les adreces de les cel·les i estableix les mateixes propietats a cadascuna. Si utilitzes el constructor Font per crear un objecte Font compartit, assigna‑l a cada cel·la amb ws.cells[addr].style.font = my_font.

L’estil afecta els valors o les fórmules de les cel·les?

No. L’estil és purament metadades visuals. cell.style.font i cell.style.fill no toquen .value ni .formula.

Quins formats de desament conserven els estils?

Els estils es conserven completament en desar a SaveFormat.XLSX. Els formats SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON i SaveFormat.MARKDOWN són formats de text pla o de text estructurat i no contenen informació d’estil.


Recursos relacionats:

 Català