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 cel·les individuals utilitzant el cell.style.font i cell.style.fill APIs. Els colors s’expressen com a 8-digit AARRGGBB hex strings; per exemple "FFFF0000" per a vermell opac, sense # prefix. Tot l’estil es realitza en pur Python 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 en 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: no is_ prefix per recordar.
  4. Objectes de font reutilitzables: Crea un Font instància una vegada i aplica-la a moltes cel·les per a una marca coherent.

Guia pas a pas

Pas 1: Instal·la Aspose.Cells FOSS per a Python

pip install aspose-cells-foss

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

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

Pas 2: Defineix el nom i la mida de la 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 tipografia disponible al sistema on s’obrirà el fitxer es pot utilitzar; especificar una tipografia que no estigui instal·lada no genera un error però pot renderitzar-se amb una tipografia de reserva quan s’obri el fitxer.


Pas 3: Defineix el color de la lletra mitjançant una cadena hex AARRGGBB

Els colors de la tipografia es defineixen amb un 8-digit hexadecimal string en AARRGGBB ordre (Alfa, Vermell, Verd, Blau). Fer no incloure 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 comuna de colors AARRGGBB:

Colorcadena AARRGGBBNotes
NegreFF000000Color de la font per defecte
BlancFFFFFFFFUtilitzar sobre fons foscos
VermellFFFF0000Text d’alerta o ressaltat
BlauFF0000FFEnllaços o èmfasi
VerdFF00FF00Valors positius o èxit
TaronjaFFFF8000Text d’avís
GrisFF808080Text atenuat o desactivat
MaríFF1E64C8Blau corporatiu / de marca

Els dos primers dígits hexadecimals són el canal alfa. Utilitzeu FF per a total opacitat. Valors inferiors 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; feu no utilitza 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 banderes per defecte són False. Es poden combinar lliurement a la mateixa cel·la.


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

Utilitza cell.style.fill.set_solid_fill("AARRGGBB") per aplicar un farciment 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 excloents; cridar-ne una sobrescriu l’altra a la mateixa cel·la.


Pas 6: Combina múltiples estils en una cel·la

Podeu encadenar qualsevol nombre de propietats d’estil a la mateixa referència de cel·la. No hi ha límit en quantes propietats d’estil 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ò genera una etiqueta blanca, en negreta, de 16 pt Arial sobre un fons blau marí, un patró comú per a les capçaleres de columna.


Pas 7: Utilitza el constructor Font per a estils reutilitzables

El Font la classe 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 vols aplicar un estil de casa 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 Font (tots els paràmetres són opcionals):

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

Exemple complet i funcional

El següent script autònom crea un llibre de treball amb una fila de capçalera amb estil, files de dades amb color i una cel·la de resum que demostra totes les API d’estil descrites 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 comptes 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 hex digits with no prefix: "FFFF0000". Els dos primers dígits són el canal alfa; utilitza FF per a completament opac.

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

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

Canvis d’estil no visibles després de desar

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

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

No hi ha cap conflicte d’API; sempre pots establir ambdós cell.style.font.color i cell.style.fill.set_solid_fill() de manera independent. Assegura’t que el color del text tingui suficient contrast amb el color de fons. Text blanc (FFFFFFFF) sobre un farciment fosc com el blau marí (FF1E64C8) és una combinació fiable.


Preguntes freqüents

Com puc eliminar un farciment de fons i tornar 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 a la tipografia 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, crea una Font() instància sense arguments (tots els valors per defecte) i assigna-la: cell.style.font = Font().

Puc aplicar el mateix estil de tipografia a un rang 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 Font constructor per crear un compartit Font objecte, 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 només metadades visuals. cell.style.font i cell.style.fill no toquis .value o .formula.

Quins formats de desament conserven l’estil?

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


Recursos relacionats:

 Català