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

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

Aspose.Cells FOSS for Python umožňuje vám použít styly písma a výplně pozadí na jednotlivé buňky pomocí cell.style.font a cell.style.fill API. Barvy jsou vyjádřeny jako 8-digit AARRGGBB hex strings; například "FFFF0000" pro neprůhlednou červenou, bez # předpony. Veškeré stylování je prováděno v čistém Python bez závislosti na Microsoft Excel nebo jakékoli externí knihovně pro vykreslování.

Proč stylovat buňky pomocí Aspose.Cells FOSS?

  1. Excel není vyžadován: Formátování běží zcela v Python na jakémkoli OS.
  2. Konzistentní model barev: Jediný 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: ne is_ předpona k zapamatování.
  4. Znovupoužitelné objekty Font: Vytvořte Font instanci jednou a použijte ji na mnoho buněk pro konzistentní značkování.

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: Nastavte název písma a velikost

Přistupte k buňce přes ws.cells["address"] a zapisujte 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 při otevření souboru se může vykreslit s náhradním písmem.


Krok 3: Nastavte barvu písma pomocí hexadecimálního řetězce AARRGGBB

Barvy písma se nastavují pomocí 8-digit hexadecimal string v AARRGGBB pořadí (Alpha, Red, Green, Blue). Ne ne zahrnout # 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á referenční tabulka barev AARRGGBB:

Barvařetězec AARRGGBBPoznámky
ČernáFF000000Výchozí barva písma
BíláFFFFFFFFPoužít na tmavých pozadích
ČervenáFFFF0000Upozornění nebo zvýrazněný text
ModráFF0000FFOdkazy nebo důraz
ZelenáFF00FF00Pozitivní hodnoty nebo úspěch
OranžováFFFF8000Varovný text
ŠedáFF808080Utlumený nebo deaktivovaný text
NámořnickáFF1E64C8Firemní / značková modrá

První dva hexadecimální znaky představují alfa kanál. Použijte FF pro plně neprůhledné. Hodnoty pod FF produkují poloprůhledné výsledky v rendererech, které podporují alfa blending.


Krok 4: Použít tučné, kurzívu, podtržení a přeškrtnutí

Nastavte každý atribut přímo jako boolean. Názvy vlastností jsou bold, italic, underline, a strikethrough; udělejte ne používejte is_bold nebo is_italic (tato jména neexistují v rozhraní FOSS API 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 plnou 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.

Pro úplné odstranění výplně 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 navzájem 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ém odkazu na buňku. Neexistuje žádný limit, kolik stylových atributů můžete 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.")

Tím vznikne bílý, tučný, 16pt Arial štítek na námořnickém pozadí, což je běžný vzor pro záhlaví sloupců.


Krok 7: Použít konstruktor Font pro opakovaně použitelné styly

Třída Font třída může být vytvořena se všemi svými vlastnostmi v jednom volání a poté přiřazena k více buňkám. To je užitečné, když chcete použít konzistentní 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.")

Časté problémy

Špatný formát barvy: použití #RRGGBB namísto AARRGGBB

Úvodní # (např. "#FF0000") nebo 6‑ciferný řetězec RGB nevytvoří očekávanou barvu. Vlastnost očekává přesně 8 hex digits with no prefix: "FFFF0000". První dvě číslice představují alfa kanál; použijte FF for plně neprůhledné.

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

FOSS API používá bold, italic, underline, a strikethrough jako názvy vlastností. Tento is_bold / is_italic pojmenovací konvence patří do jiné knihovny a zde neexistuje. Nahraďte jakýkoli is_bold odkaz s 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 buňky po volání uložení nemá žádný vliv na již zapsaný soubor. Pokud znovu použijete cell proměnnou, potvrďte, že stále odkazuje na správnou adresu buňky.

Výplň a písmo ve stejné buňce vizuálně konfliktují

Neexistuje žádný konflikt API; můžete vždy nastavit oba cell.style.font.color a 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é (FF1E64C8).


Často kladené otázky

Jak odebrat 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á výplň z buňky.

Jak resetovat buňku na výchozí písmo (Calibri 11 pt černé)?

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 Font() instanci bez argumentů (všechny výchozí hodnoty) 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. Projděte adresy buněk a nastavte na každé stejné vlastnosti. Pokud použijete the Font konstruktor k vytvoření sdíleného Font objektu, 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. Stylování je čistě vizuální metadata. cell.style.font a cell.style.fill nedotýkejte se .value nebo .formula.

Které formáty ukládání zachovávají styly?

Styly jsou při ukládání do SaveFormat.XLSX. The SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, a SaveFormat.MARKDOWN formáty jsou formáty prostého textu nebo strukturovaného textu a neobsahují informace o stylování.


Související zdroje:

 Čeština