Jak stylovat buňky pomocí Aspose.Cells FOSS v Pythonu

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?

  1. Není potřeba Excel: Formátování probíhá zcela v Pythonu na jakémkoli OS.
  2. Konzistentní model barev: Jeden 8‑ciferný řetězec AARRGGBB pokrývá barvu písma i barvu výplně ve stejném formátu.
  3. Čitelné názvy vlastností: bold, italic, underline, strikethrough: není třeba si pamatovat předponu is_.
  4. Znovupoužitelné objekty Font: Vytvořte jednou instanci Font a 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-foss

Nejsou 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, SaveFormat

Krok 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:

BarvaAARRGGBB stringPoznámky
ČernáFF000000Výchozí barva písma
BíláFFFFFFFFPoužít na tmavém pozadí
ČervenáFFFF0000Upozornění nebo zvýraznění textu
ModráFF0000FFOdkazy nebo důraz
ZelenáFF00FF00Kladné hodnoty nebo úspěch
OranžováFFFF8000Varovný text
ŠedáFF808080Utlumený nebo zakázaný text
NámořnickáFF1E64C8Firemní / 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é):

ParametrVýchozí
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

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 = False

Alternativně 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:

 Čeština