Kaip stilizuoti langelius su Aspose.Cells FOSS Python

Kaip stilizuoti langelius su Aspose.Cells FOSS Python

Aspose.Cells FOSS for Python leidžia taikyti šriftų stilius ir fono užpildus atskiriems langeliams naudojant cell.style.font ir cell.style.fill API. Spalvos išreiškiamos kaip 8-digit AARRGGBB hex strings; pavyzdžiui "FFFF0000" nepermatomam raudonam, be # priešdėlio. Visas stiliavimas atliekamas grynoje Python be jokio priklausomybės nuo Microsoft Excel ar bet kokios išorinės atvaizdavimo bibliotekos.

Kodėl stilizuoti langelius su Aspose.Cells FOSS?

  1. Excel nereikalingas: Formatuoti vyksta visiškai Python bet kurioje OS.
  2. Nuoseklus spalvų modelis: Vienas 8‑skaitmenų AARRGGBB eilutė apima šrifto spalvą ir užpildo spalvą tuo pačiu formatu.
  3. Skaitomi savybių pavadinimai: bold, italic, underline, strikethrough: ne is_ priešdėlis, kurį atsiminti.
  4. Pakartotinai naudojami šrifto objektai: Sukurkite Font sukurtą egzempliorių vieną kartą ir pritaikykite jį daugeliui langelių, kad išlaikytumėte nuoseklų prekės ženklo įvaizdį.

Žingsnis po žingsnio vadovas

Žingsnis 1: Įdiekite Aspose.Cells FOSS for Python

pip install aspose-cells-foss

Nereikia jokių papildomų sistemos paketų. Importuokite reikiamas klases iš aspose.cells_foss:

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

2 žingsnis: Nustatykite šrifto pavadinimą ir dydį

Pasiekite langelį per ws.cells["address"] ir rašykite į cell.style.font.name ir 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")

Numatytasis šriftas yra Calibri, 11pt. Bet kurį šriftą, esantį sistemoje, kurioje bus atveriamas failas, galima naudoti; nurodant šriftą, kuris nėra įdiegtas, nebus klaidos, tačiau failas gali būti rodomas su atsarginiu šriftu, kai jis atveriamas.


3 žingsnis: Nustatykite šrifto spalvą naudojant AARRGGBB šešioliktainę eilutę

Šrifto spalvos nustatomos naudojant an 8-digit hexadecimal string į AARRGGBB tvarka (Alpha, Red, Green, Blue). Darykite ne įtraukti # priešdėlis.

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

Įprasta AARRGGBB spalvų nuoroda:

SpalvaAARRGGBB stringPastabos
JuodaFF000000Numatytoji šrifto spalva
BaltaFFFFFFFFNaudoti ant tamsaus fono
RaudonaFFFF0000Įspėjimo arba paryškinto teksto
MėlynaFF0000FFNuorodos arba akcentavimas
ŽaliaFF00FF00Teigiamos reikšmės arba sėkmė
OranžinėFFFF8000Įspėjimo tekstas
PilkaFF808080Nuslopintas arba išjungtas tekstas
Jūrų mėlynaFF1E64C8Įmonės / prekės ženklo mėlyna

Pirmi du šešioliktainiai skaitmenys yra alfa kanalas. Naudokite FF pilnam nepermatomumui. Reikšmės žemiau FF sukuria pusiau permatomus rezultatus piešimo varikliuose, kurie palaiko alfa maišymą.


Žingsnis 4: taikyti paryškintą, kursyvą, pabraukimą ir perbraukimą

Nustatykite kiekvieną atributą tiesiogiai kaip loginę reikšmę. Savybių pavadinimai yra bold, italic, underline, ir strikethrough; darykite ne naudoti is_bold arba is_italic (šie pavadinimai neegzistuoja FOSS API ir sukels 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")

Visi keturi vėliavų parametrai pagal numatytuosius nustatymus yra False. Jas galima laisvai kombinuoti toje pačioje ląstelėje.


Žingsnis 5: nustatyti vientisą fono užpildymo spalvą

Naudokite cell.style.fill.set_solid_fill("AARRGGBB") norint pritaikyti fono užpildą. Spalvos formatas yra tas pats 8‑skaitmenų AARRGGBB šešioliktainis eilutės formatas kaip ir šrifto spalva.

Norėdami visiškai pašalinti užpildą, iškvieskite 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() ir set_no_fill() yra tarpusavyje išskirtiniai; vieno iškvietimas perrašo kitą toje pačioje ląstelėje.


Žingsnis 6: sujungti kelias stilių savybes vienoje ląstelėje

Galite grandinėti bet kokį skaičių stiliaus savybių toje pačioje ląstelės nuorodoje. Nėra apribojimų, kiek stiliaus atributų gali būti nustatyta prieš išsaugojant.

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

Tai sukuria baltą, paryškintą, 16pt Arial etiketę ant tamsiai mėlynos fono, dažną šabloną stulpelių antraštėms.


Žingsnis 7: naudoti šrifto konstruktorių pakartotinai naudojamiems stiliams

Ši Font class gali būti instancijuojama su visomis jos savybėmis vienu kvietimu, tada priskiriama kelioms ląstelėms. Tai naudinga, kai norite nuoseklaus namų stiliaus, taikomo daugybei ląstelių, be to paties savybių priskyrimo kartojimo.

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

Šrifto konstruktoriaus numatytosios reikšmės (visi parametrai yra neprivalomi):

ParametrasNumatytoji
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Pilnas veikiantis pavyzdys

Toliau pateiktas savarankiškas scenarijus sukuria darbaknygę su stilizuota antraštės eilute, spalvotomis duomenų eilutėmis ir santraukos ląstele, demonstruojančia visą aukščiau aprašytą stilių API:

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

Common Issues

Neteisingas spalvos formatas: naudojamas #RRGGBB vietoj AARRGGBB

Pradinis # (pvz. "#FF0000") arba 6 skaitmenų RGB eilutė nesukurs laukiamo spalvos. Savybė tiksliai tikisi 8 hex digits with no prefix: "FFFF0000". Pirmi du skaitmenys yra alfa kanalas; naudokite FF pilnai nepermatomam.

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

FOSS API naudoja bold, italic, underline, ir strikethrough kaip savybių pavadinimus. Ši is_bold / is_italic pavadinimų konvencija priklauso kitai bibliotikai ir čia neegzistuoja. Pakeiskite bet kokį is_bold nuorodą į bold.

Stiliaus pakeitimai nematomi po išsaugojimo

Įsitikinkite, kad nustatote stiliaus savybes ląstelės objekte prieš iškviečiant workbook.save(). Nustatant savybę ląstelėje po išsaugojimo iškvietimo, tai neturi jokio poveikio jau įrašytam failui. Jei vėl naudojate cell kintamąjį, patikrinkite, ar jis vis dar nurodo teisingą ląstelės adresą.

Užpildas ir šriftas toje pačioje ląstelėje vizualiai konfliktuoja

Nėra API konflikto; visada galite nustatyti abu cell.style.font.color ir cell.style.fill.set_solid_fill() atskirai. Įsitikinkite, kad teksto spalva turi pakankamą kontrastą su fono spalva. Balta teksto spalva (FFFFFFFF) ant tamsios užpildymo spalvos, pvz., jūros mėlynos (FF1E64C8).


Dažnai užduodami klausimai

Kaip pašalinti fono užpildą ir grąžinti ląstelę į be užpildo būseną?

Iškvieskite cell.style.fill.set_no_fill(). Tai pašalina bet kokį anksčiau nustatytą vientisą užpildymą iš langelio.

Kaip atstatyti ląstelę į numatytąjį šriftą (Calibri 11pt juodas)?

Iš naujo priskirkite numatytas reikšmes aiškiai:

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

Alternatyviai sukurkite Font() instanciją be argumentų (visi numatyti) ir priskirkite ją: cell.style.font = Font().

Ar galiu pritaikyti tą patį šrifto stilių ląstelių diapazonui cikle?

Taip. Pereikite per langelių adresus ir nustatykite tas pačias savybes kiekvienam. Jei naudojate Font konstruktorių sukurti bendrą Font objektą, priskirkite jį kiekvienam langeliui su ws.cells[addr].style.font = my_font.

Ar stilius veikia ląstelių reikšmes ar formules?

Ne. Stilius yra tik vizualinė metaduomenų informacija. cell.style.font ir cell.style.fill nekirskite .value arba .formula.

Kurių išsaugojimo formatų stiliai išlaikomi?

Stiliai yra visiškai išsaugomi, kai įrašoma į SaveFormat.XLSX. The SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, ir SaveFormat.MARKDOWN formatai yra paprasto teksto arba struktūruoto teksto formatai ir neperneša stiliaus informacijos.


Susiję ištekliai:

 Lietuvių