Comment styliser les cellules avec Aspose.Cells FOSS dans Python

Comment styliser les cellules avec Aspose.Cells FOSS dans Python

Aspose.Cells FOSS for Python vous permet d’appliquer des styles de police et des remplissages d’arrière-plan aux cellules individuelles en utilisant le cell.style.font et cell.style.fill APIs. Les couleurs sont exprimées comme 8-digit AARRGGBB hex strings; par exemple "FFFF0000" pour un rouge opaque, sans # préfixe. Toute la mise en forme est réalisée en pur Python sans dépendance à Microsoft Excel ou à aucune bibliothèque de rendu externe.

Pourquoi styliser les cellules avec Aspose.Cells FOSS ?

  1. Excel non requis: Le formatage s’exécute entièrement dans Python sur n’importe quel OS.
  2. Modèle de couleur cohérent: Une chaîne AARRGGBB à 8 chiffres couvre la couleur de police et la couleur de remplissage avec le même format.
  3. Noms de propriétés lisibles: bold, italic, underline, strikethrough: non is_ préfixe à retenir.
  4. Objets Font réutilisables: Créer un Font instance une fois et l’appliquer à de nombreuses cellules pour une identité visuelle cohérente.

Guide étape par étape

Étape 1 : Installez Aspose.Cells FOSS pour Python

pip install aspose-cells-foss

Aucun paquet système supplémentaire n’est requis. Importez les classes dont vous avez besoin depuis aspose.cells_foss:

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

Étape 2 : définir le nom et la taille de la police

Accédez à une cellule via ws.cells["address"] et écrire à cell.style.font.name et 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 police par défaut est Calibri à 11pt. Tout nom de police disponible sur le système où le fichier sera ouvert peut être utilisé ; spécifier une police qui n’est pas installée ne provoque pas d’erreur mais peut s’afficher avec une police de secours lorsque le fichier est ouvert.


Étape 3 : définir la couleur de la police à l’aide d’une chaîne hexadécimale AARRGGBB

Les couleurs de police sont définies avec un 8-digit hexadecimal string dans AARRGGBB ordre (Alpha, Rouge, Vert, Bleu). Faire pas inclure un # préfixe.

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

Référence courante des couleurs AARRGGBB :

CouleurChaîne AARRGGBBNotes
NoirFF000000Couleur de police par défaut
BlancFFFFFFFFUtiliser sur des fonds sombres
RougeFFFF0000Alerte ou texte en surbrillance
BleuFF0000FFLiens ou mise en évidence
VertFF00FF00Valeurs positives ou succès
OrangeFFFF8000Texte d’avertissement
GrisFF808080Texte atténué ou désactivé
MarineFF1E64C8Bleu d’entreprise / de marque

Les deux premiers chiffres hexadécimaux représentent le canal alpha. Utilisez FF pour une opacité totale. Les valeurs inférieures FF produisent des résultats semi-transparents dans les moteurs qui prennent en charge le mélange alpha.


Étape 4 : Appliquer le gras, l’italique, le soulignement et le barré

Définissez chaque attribut directement comme un booléen. Les noms des propriétés sont bold, italic, underline, et strikethrough; faites pas utiliser is_bold ou is_italic (ces noms n’existent pas dans l’API FOSS et déclencheront 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 indicateurs sont par défaut à False. Ils peuvent être combinés librement sur la même cellule.


Étape 5 : Définir une couleur de remplissage d’arrière‑plan solide

Utilisez cell.style.fill.set_solid_fill("AARRGGBB") pour appliquer un remplissage d’arrière-plan. Le format de couleur est la même chaîne hexadécimale à 8 chiffres AARRGGBB que la couleur de police.

Pour supprimer complètement un remplissage, appelez 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() et set_no_fill() sont mutuellement exclusifs ; appeler l’un écrase l’autre sur la même cellule.


Étape 6 : Combiner plusieurs styles sur une même cellule

Vous pouvez chaîner un nombre quelconque de propriétés de style sur la même référence de cellule. Il n’y a aucune limite au nombre d’attributs de style définis avant l’enregistrement.

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

Cela produit une étiquette blanche, en gras, Arial 16 pt, sur un arrière‑plan bleu marine, un modèle courant pour les en‑têtes de colonne.


Étape 7 : Utiliser le constructeur Font pour des styles réutilisables

Le Font class peut être instanciée avec toutes ses propriétés en un seul appel, puis assignée à plusieurs cellules. Ceci est utile lorsque vous souhaitez appliquer un house style cohérent à travers de nombreuses cellules sans répéter les mêmes affectations de propriétés.

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

Valeurs par défaut du constructeur Font (tous les paramètres sont optionnels) :

ParamètreValeur par défaut
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Exemple complet fonctionnel

Le script autonome suivant crée un classeur avec une ligne d’en‑tête stylisée, des lignes de données colorées et une cellule de synthèse démontrant chaque API de style présentée ci‑dessus :

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

Problèmes courants

Format de couleur incorrect : utilisation de #RRGGBB au lieu de AARRGGBB

Un préfixe # (p. ex. "#FF0000") ou une chaîne RGB à 6 chiffres ne produira pas la couleur attendue. La propriété attend exactement 8 hex digits with no prefix: "FFFF0000". Les deux premiers chiffres représentent le canal alpha ; utilisez FF pour une opacité totale.

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

L’API FOSS utilise bold, italic, underline, et strikethrough comme noms de propriétés. Le is_bold / is_italic la convention de nommage appartient à une bibliothèque différente et n’existe pas ici. Remplacez tout is_bold référence par bold.

Modifications de style non visibles après l’enregistrement

Assurez‑vous de définir les propriétés de style sur l’objet cellule avant appel workbook.save(). La définition d’une propriété sur une cellule après l’appel de sauvegarde n’a aucun effet sur le fichier déjà écrit. Si vous réutilisez un cell variable, confirmez qu’elle fait toujours référence à la bonne adresse de cellule.

Le remplissage et la police sur la même cellule créent un conflit visuel

Il n’y a aucun conflit d’API ; vous pouvez toujours définir les deux cell.style.font.color et cell.style.fill.set_solid_fill() indépendamment. Assurez-vous que la couleur du texte offre un contraste suffisant avec la couleur d’arrière-plan. Texte blanc (FFFFFFFF) sur un remplissage sombre comme le bleu marine (FF1E64C8) est une combinaison fiable.


Foire aux questions

Comment supprimer un remplissage d’arrière‑plan et ramener une cellule à aucun remplissage ?

Appeler cell.style.fill.set_no_fill(). Cela supprime tout remplissage uni précédemment défini de la cellule.

Comment réinitialiser une cellule à la police par défaut (Calibri 11 pt noir) ?

Réaffectez explicitement les valeurs par défaut :

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

Alternativement, créez un Font() instance sans arguments (tous les paramètres par défaut) et assignez‑la : cell.style.font = Font().

Puis‑je appliquer le même style de police à une plage de cellules dans une boucle ?

Oui. Parcourez les adresses des cellules et définissez les mêmes propriétés sur chacune. Si vous utilisez le Font constructeur pour créer un partagé Font objet, attribuez‑le à chaque cellule avec ws.cells[addr].style.font = my_font.

Le style affecte‑t‑il les valeurs ou les formules des cellules ?

Non. Le style est uniquement des métadonnées visuelles. cell.style.font et cell.style.fill ne touchez pas .value ou .formula.

Quels formats d’enregistrement conservent les styles ?

Les styles sont entièrement conservés lors de l’enregistrement vers SaveFormat.XLSX. Le SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, et SaveFormat.MARKDOWN les formats sont des formats texte brut ou texte structuré et ne contiennent pas d’informations de style.


Ressources associées :

 Français