Jak stylovat buňky pomocí Aspose.Cells FOSS v Pythonu
Aspose.Cells FOSS for Python vám umožňuje aplikovat styly písma a výplně pozadí na jednotlivé buňky pomocí API cell.style.font a cell.style.fill. Barvy jsou vyjádřeny jako 8‑ciferné AARRGGBB hexadecimální řetězce; například "FFFF0000" pro neprůhlednou červenou, bez předpony #. Veškeré stylování je prováděno čistě v Pythonu bez závislosti na Microsoft Excel ani na jakékoli externí knihovně pro vykreslování.
Proč stylovat buňky pomocí Aspose.Cells FOSS?
- Není potřeba Excel: Formátování probíhá zcela v Pythonu na jakémkoli OS.
- Konzistentní model barev: Jeden 8‑ciferný řetězec AARRGGBB pokrývá barvu písma i barvu výplně ve stejném formátu.
- Čitelné názvy vlastností:
bold,italic,underline,strikethrough: není třeba si pamatovat předponuis_. - Znovupoužitelné objekty Font: Vytvořte jednou instanci
Fonta použijte ji v mnoha buňkách pro konzistentní značku.
Průvodce krok za krokem
Krok 1: Nainstalujte Aspose.Cells FOSS pro Python
pip install aspose-cells-fossNejsou vyžadovány žádné další systémové balíčky. Importujte třídy, které potřebujete, z aspose.cells_foss:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormatKrok 2: Nastavit název písma a velikost
Přistupte k buňce přes ws.cells["address"] a zapište do cell.style.font.name a 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")Výchozí písmo je Calibri o velikosti 11pt. Jakýkoli název písma dostupný v systému, kde bude soubor otevřen, lze použít; zadání písma, které není nainstalováno, nezpůsobí chybu, ale může se při otevření souboru vykreslit pomocí náhradního písma.
Krok 3: Nastavte barvu písma pomocí hexadecimálního řetězce AARRGGBB
Barvy písma se nastavují pomocí 8‑znakového hexadecimálního řetězce v pořadí AARRGGBB (Alfa, Červená, Zelená, Modrá). Nezahrnujte předponu #.
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")Běžná reference barev AARRGGBB:
| Barva | AARRGGBB string | Poznámky |
|---|---|---|
| Černá | FF000000 | Výchozí barva písma |
| Bílá | FFFFFFFF | Použít na tmavém pozadí |
| Červená | FFFF0000 | Upozornění nebo zvýraznění textu |
| Modrá | FF0000FF | Odkazy nebo důraz |
| Zelená | FF00FF00 | Kladné hodnoty nebo úspěch |
| Oranžová | FFFF8000 | Varovný text |
| Šedá | FF808080 | Utlumený nebo zakázaný text |
| Námořnická | FF1E64C8 | Firemní / značková modř |
První dva hexadecimální číslice jsou alfa kanál. Použijte FF pro plně neprůhledné. Hodnoty pod FF produkují poloprůhledné výsledky v rendererech, které podporují alpha blending.
Krok 4: Použít tučné, kurzívu, podtržení a přeškrtnutí
Nastavte každý atribut přímo jako boolean. Jména vlastností jsou bold, italic, underline a strikethrough; nepoužívejte is_bold ani is_italic (tato jména neexistují v API FOSS a vyvolají 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")Všechny čtyři příznaky mají výchozí hodnotu False. Lze je volně kombinovat ve stejné buňce.
Krok 5: Nastavit jednolitou barvu výplně pozadí
Použijte cell.style.fill.set_solid_fill("AARRGGBB") k aplikaci výplně pozadí. Formát barvy je stejný 8‑ciferný hexadecimální řetězec AARRGGBB jako barva písma.
Chcete‑li zcela odstranit výplň, zavolejte 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() a set_no_fill() jsou vzájemně výlučné; volání jednoho přepíše druhé ve stejné buňce.
Krok 6: Kombinovat více stylů v jedné buňce
Můžete řetězit libovolný počet stylových vlastností na stejný odkaz buňky. Neexistuje žádný limit, kolik stylových atributů lze nastavit před uložením.
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.")Toto vytváří bílý, tučný, 16pt Arial štítek na námořnickém pozadí, běžný vzor pro záhlaví sloupců.
Krok 7: Použijte konstruktor fontů pro opakovaně použitelné styly
Třídu Font lze vytvořit se všemi jejími vlastnostmi v jednom volání a poté přiřadit k více buňkám. To je užitečné, když chcete použít jednotný firemní styl napříč mnoha buňkami, aniž byste opakovali stejné přiřazení vlastností.
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.")Výchozí hodnoty konstruktoru Font (všechny parametry jsou volitelné):
| Parametr | Výchozí |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
Kompletní funkční příklad
Následující samostatný skript vytvoří sešit se stylovaným řádkem záhlaví, barevnými řádky dat a souhrnnou buňkou, která demonstruje všechny výše popsané API pro stylování:
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.")Běžné problémy
Špatný formát barvy: používá se #RRGGBB místo AARRGGBB
Úvodní # (např. "#FF0000") nebo 6‑ciferný řetězec RGB nevytvoří očekávanou barvu. Vlastnost očekává přesně 8 hexadecimálních číslic bez předpony: "FFFF0000". První dvě číslice představují alfa kanál; použijte FF pro plně neprůhledné.
AttributeError: 'Font' object has no attribute 'is_bold'
FOSS API používá bold, italic, underline a strikethrough jako názvy vlastností. Konvence pojmenování is_bold / is_italic patří k jiné knihovně a zde neexistuje. Nahraďte jakýkoli odkaz na is_bold pomocí bold.
Změny stylu nejsou po uložení viditelné
Ujistěte se, že nastavíte vlastnosti stylu na objekt buňky před voláním workbook.save(). Nastavení vlastnosti na buňce po volání uložení nemá žádný vliv na již zapsaný soubor. Pokud znovu použijete proměnnou cell, ověřte, že stále odkazuje na správnou adresu buňky.
Výplň a písmo ve stejné buňce vizuálně kolidují
Není žádný konflikt API; můžete vždy nastavit jak cell.style.font.color, tak cell.style.fill.set_solid_fill() nezávisle. Ujistěte se, že barva textu má dostatečný kontrast vůči barvě pozadí. Bílý text (FFFFFFFF) na tmavém výplni, například námořnické modré (FF1E64C8), je spolehlivá kombinace.
Často kladené otázky
Jak odstranit výplň pozadí a vrátit buňku do stavu bez výplně?
Zavolejte cell.style.fill.set_no_fill(). Tím se odstraní jakékoli dříve nastavené plné vyplnění buňky.
Jak resetovat buňku na výchozí písmo (Calibri 11pt černá)?
Znovu přiřaďte výchozí hodnoty explicitně:
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 = FalseAlternativně vytvořte instanci Font() bez argumentů (všechny výchozí) a přiřaďte ji: cell.style.font = Font().
Mohu použít stejný styl písma na rozsah buněk ve smyčce?
Ano. Procházejte adresy buněk a nastavte na každé stejné vlastnosti. Pokud použijete konstruktor Font k vytvoření sdíleného objektu Font, přiřaďte jej každé buňce pomocí ws.cells[addr].style.font = my_font.
Ovlivňuje stylování hodnoty buněk nebo vzorce?
Ne. Styling je čistě vizuální metadata. cell.style.font a cell.style.fill nedotýkají se .value ani .formula.
Které formáty ukládání zachovávají styly?
Styly jsou při ukládání do SaveFormat.XLSX plně zachovány. Formáty SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON a SaveFormat.MARKDOWN jsou formáty prostého textu nebo strukturovaného textu a neobsahují informace o stylování.
Související zdroje:
- Aspose.Cells FOSS pro Python: Průvodce vývojáře
- Operace s tabulkami
- Jak načíst tabulky v Pythonu
- Jak vytvořit grafy v Pythonu
- Reference API: Font, Fill, Style
- Přehled produktu: souhrn funkcí a možností
- Blog: Představení Aspose.Cells FOSS: přehled knihovny a rychlý start