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 ?
- Excel non requis: Le formatage s’exécute entièrement dans Python sur n’importe quel OS.
- 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.
- Noms de propriétés lisibles:
bold,italic,underline,strikethrough: nonis_préfixe à retenir. - Objets Font réutilisables: Créer un
Fontinstance 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-fossAucun 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 :
| Couleur | Chaîne AARRGGBB | Notes |
|---|---|---|
| Noir | FF000000 | Couleur de police par défaut |
| Blanc | FFFFFFFF | Utiliser sur des fonds sombres |
| Rouge | FFFF0000 | Alerte ou texte en surbrillance |
| Bleu | FF0000FF | Liens ou mise en évidence |
| Vert | FF00FF00 | Valeurs positives ou succès |
| Orange | FFFF8000 | Texte d’avertissement |
| Gris | FF808080 | Texte atténué ou désactivé |
| Marine | FF1E64C8 | Bleu 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ètre | Valeur par défaut |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
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 = FalseAlternativement, 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 :
- Aspose.Cells FOSS for Python: Developer Guide
- Opérations sur les feuilles de calcul
- Comment charger des feuilles de calcul dans Python
- Comment créer des graphiques dans Python
- Référence API : Font, Fill, Style
- Aperçu du produit:Résumé des fonctionnalités et capacités
- Blog : Présentation de Aspose.Cells FOSS:Aperçu de la bibliothèque et démarrage rapide