Jak stylować komórki przy użyciu Aspose.Cells FOSS w Python

Jak stylować komórki przy użyciu Aspose.Cells FOSS w Python

Aspose.Cells FOSS for Python pozwala stosować style czcionki i wypełnienia tła w poszczególnych komórkach przy użyciu the cell.style.font i cell.style.fill API. Kolory są wyrażane jako 8-digit AARRGGBB hex strings; na przykład "FFFF0000" dla nieprzezroczystej czerwieni, bez # prefiksu. Całe formatowanie jest wykonywane w czystym Python bez zależności od Microsoft Excel ani żadnej zewnętrznej biblioteki renderującej.

Dlaczego stylować komórki przy użyciu Aspose.Cells FOSS?

  1. Excel nie jest wymagany: Formatowanie działa w pełni w Python na dowolnym systemie operacyjnym.
  2. Spójny model kolorów: Pojedynczy 8‑cyfrowy ciąg AARRGGBB obejmuje kolor czcionki i kolor wypełnienia w tym samym formacie.
  3. Czytelne nazwy właściwości: bold, italic, underline, strikethrough:nie is_ prefiks do zapamiętania.
  4. Obiekty czcionek wielokrotnego użytku: Utwórz Font instancję raz i zastosuj ją do wielu komórek, aby zapewnić spójną identyfikację wizualną.

Przewodnik krok po kroku

Krok 1: Zainstaluj Aspose.Cells FOSS dla Python

pip install aspose-cells-foss

Nie są wymagane dodatkowe pakiety systemowe. Importuj potrzebne klasy z aspose.cells_foss:

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

Krok 2: Ustaw nazwę i rozmiar czcionki

Uzyskaj dostęp do komórki przez ws.cells["address"] i zapisz do cell.style.font.name i 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")

Domyślna czcionka to Calibri 11pt. Dowolna nazwa czcionki dostępna w systemie, w którym plik zostanie otwarty, może być użyta; podanie czcionki, która nie jest zainstalowana, nie powoduje błędu, ale może zostać wyświetlona z czcionką zastępczą po otwarciu pliku.


Krok 3: Ustaw kolor czcionki przy użyciu szesnastkowego ciągu AARRGGBB

Kolory czcionek są ustawiane przy użyciu 8-digit hexadecimal string w AARRGGBB kolejności (Alpha, Red, Green, Blue). Nie dołącz # prefiks.

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

Typowe odniesienie kolorów AARRGGBB:

Kolorciąg AARRGGBBNotatki
CzarnyFF000000Domyślny kolor czcionki
BiałyFFFFFFFFUżywać na ciemnych tłach
CzerwonyFFFF0000Alert lub podświetlenie tekstu
NiebieskiFF0000FFLinki lub wyróżnienie
ZielonyFF00FF00Pozytywne wartości lub sukces
PomarańczowyFFFF8000Tekst ostrzegawczy
SzaryFF808080Stłumiony lub wyłączony tekst
GranatowyFF1E64C8Niebieski korporacyjny / marki

Pierwsze dwa cyfry szesnastkowe to kanał alfa. Użyj FF do pełnej nieprzezroczystości. Wartości poniżej FF tworzą półprzezroczyste wyniki w renderownikach obsługujących mieszanie alfa.


Krok 4: Zastosuj pogrubienie, kursywę, podkreślenie i przekreślenie

Ustaw każdy atrybut bezpośrednio jako wartość logiczną. Nazwy właściwości to bold, italic, underline, oraz strikethrough; wykonaj nie użyj is_bold lub is_italic (te nazwy nie istnieją w API FOSS i spowodują 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")

Wszystkie cztery flagi domyślnie ustawione są na False. Mogą być dowolnie łączone w tej samej komórce.


Krok 5: Ustaw jednolity kolor wypełnienia tła

Użyj cell.style.fill.set_solid_fill("AARRGGBB") do zastosowania wypełnienia tła. Format koloru to ten sam 8‑znakowy ciąg szesnastkowy AARRGGBB co kolor czcionki.

Aby całkowicie usunąć wypełnienie, wywołaj 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() oraz set_no_fill() są wzajemnie wykluczające się; wywołanie jednego nadpisuje drugie w tej samej komórce.


Krok 6: Połącz wiele stylów w jednej komórce

Możesz łączyć dowolną liczbę właściwości stylu na tej samej referencji komórki. Nie ma limitu liczby ustawionych atrybutów stylu przed zapisaniem.

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

To tworzy biały, pogrubiony, 16‑punktowy etykietę Arial na granatowym tle, typowy wzorzec dla nagłówków kolumn.


Krok 7: Użyj konstruktora Font do stylów wielokrotnego użytku

Ten Font klasa może być zainicjowana ze wszystkimi swoimi właściwościami w jednym wywołaniu, a następnie przypisana do wielu komórek. Jest to przydatne, gdy chcesz zastosować spójny styl firmowy w wielu komórkach, nie powtarzając tych samych przypisań właściwości.

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

Domyślne wartości konstruktora Font (wszystkie parametry są opcjonalne):

ParametrDomyślna
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Pełny działający przykład

Poniższy samodzielny skrypt tworzy skoroszyt z wystylizowanym wierszem nagłówka, kolorowymi wierszami danych oraz komórką podsumowania, demonstrując wszystkie opisane wyżej API stylizacji:

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

Typowe problemy

Nieprawidłowy format koloru: użyto #RRGGBB zamiast AARRGGBB

Wiodący # (np. "#FF0000") lub 6‑znakowy ciąg RGB nie wygeneruje oczekiwanego koloru. Właściwość wymaga dokładnie 8 hex digits with no prefix: "FFFF0000". Pierwsze dwa znaki to kanał alfa; użyj FF dla całkowicie nieprzezroczystego.

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

API FOSS używa bold, italic, underline, oraz strikethrough jako nazwy właściwości. Ten is_bold / is_italic konwencja nazewnictwa należy do innej biblioteki i nie istnieje tutaj. Zastąp dowolny is_bold odwołanie na bold.

Zmiany stylu nie są widoczne po zapisaniu

Upewnij się, że ustawiasz właściwości stylu na obiekcie komórki przed wywołaniem workbook.save(). Ustawienie właściwości na komórce po wywołaniu zapisu nie ma wpływu na już zapisany plik. Jeśli ponownie używasz a cell zmiennej, potwierdź, że nadal odnosi się do prawidłowego adresu komórki.

Wypełnienie i czcionka w tej samej komórce kolidują wizualnie

Nie ma konfliktu API; możesz zawsze ustawić oba cell.style.font.color i cell.style.fill.set_solid_fill() niezależnie. Upewnij się, że kolor tekstu ma wystarczający kontrast względem koloru tła. Biały tekst (FFFFFFFF) na ciemnym wypełnieniu, takim jak granatowy (FF1E64C8) jest niezawodną kombinacją.


Najczęściej zadawane pytania

Jak usunąć wypełnienie tła i przywrócić komórkę do braku wypełnienia?

Wywołaj cell.style.fill.set_no_fill(). To usuwa wszelkie wcześniej ustawione jednolite wypełnienie z komórki.

Jak przywrócić komórkę do domyślnej czcionki (Calibri 11 pt czarna)?

Przypisz domyślne wartości explicite:

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

Alternatywnie, utwórz Font() instancję bez argumentów (wszystkie domyślne) i przypisz ją: cell.style.font = Font().

Czy mogę zastosować ten sam styl czcionki do zakresu komórek w pętli?

Tak. Przejdź iteracyjnie po adresach komórek i ustaw te same właściwości dla każdej. Jeśli użyjesz Font konstruktora, aby utworzyć współdzielone Font obiekt, przypisz go do każdej komórki za pomocą ws.cells[addr].style.font = my_font.

Czy stylowanie wpływa na wartości komórek lub formuły?

Nie. Stylowanie jest wyłącznie wizualnym metadanymi. cell.style.font i cell.style.fill nie dotykaj .value lub .formula.

Które formaty zapisu zachowują style?

Style są w pełni zachowywane przy zapisywaniu do SaveFormat.XLSX. Ten SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, i SaveFormat.MARKDOWN formaty są formatami tekstu zwykłego lub tekstu strukturalnego i nie zawierają informacji o stylach.


Powiązane zasoby:

 Polski