Πώς να μορφοποιήσετε κελιά με το Aspose.Cells FOSS σε Python

Πώς να μορφοποιήσετε κελιά με το Aspose.Cells FOSS σε Python

Aspose.Cells FOSS for Python σας επιτρέπει να εφαρμόζετε στυλ γραμματοσειράς και γεμίσματα φόντου σε μεμονωμένα κελιά χρησιμοποιώντας τις cell.style.font και cell.style.fill APIs. Τα χρώματα εκφράζονται ως 8-digit AARRGGBB hex strings· για παράδειγμα "FFFF0000" για αδιαφανές κόκκινο, χωρίς πρόθεμα #. Όλο το στυλ γίνεται σε καθαρή Python χωρίς εξάρτηση από το Microsoft Excel ή οποιαδήποτε εξωτερική βιβλιοθήκη απόδοσης.

Γιατί να μορφοποιήσετε κελιά με το Aspose.Cells FOSS?

  1. Δεν απαιτείται Excel: Η μορφοποίηση εκτελείται εξ ολοκλήρου σε Python σε οποιοδήποτε OS.
  2. Συνεπές μοντέλο χρώματος: Μία ενιαία συμβολοσειρά 8-ψηφίων AARRGGBB καλύπτει το χρώμα γραμματοσειράς και το χρώμα γεμίσματος με την ίδια μορφή.
  3. Αναγνώσιμα ονόματα ιδιοτήτων: bold, italic, underline, strikethrough: χωρίς πρόθεμα is_ για να θυμάστε.
  4. Επαναχρησιμοποιήσιμα αντικείμενα γραμματοσειράς: Δημιουργήστε μια παρουσία Font μία φορά και εφαρμόστε την σε πολλά κελιά για συνεπή branding.

Οδηγός βήμα προς βήμα

Βήμα 1: Εγκατάσταση Aspose.Cells FOSS για Python

pip install aspose-cells-foss

Δεν απαιτούνται πρόσθετα πακέτα συστήματος. Εισάγετε τις κλάσεις που χρειάζεστε από aspose.cells_foss:

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

Βήμα 2: Ορίστε το όνομα και το μέγεθος της γραμματοσειράς

Πρόσβαση σε κελί μέσω ws.cells["address"] και εγγραφή στο cell.style.font.name και 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")

Η προεπιλεγμένη γραμματοσειρά είναι Calibri στα 11pt. Οποιοδήποτε όνομα γραμματοσειράς διαθέσιμο στο σύστημα όπου θα ανοιχτεί το αρχείο μπορεί να χρησιμοποιηθεί· η καθορισμός μιας γραμματοσειράς που δεν είναι εγκατεστημένη δεν προκαλεί σφάλμα, αλλά μπορεί να εμφανιστεί με εναλλακτική γραμματοσειρά όταν το αρχείο ανοιχτεί.


Βήμα 3: Ορισμός χρώματος γραμματοσειράς χρησιμοποιώντας συμβολοσειρά AARRGGBB Hex

Τα χρώματα γραμματοσειράς ορίζονται με μια 8-ψήφια δεκαεξαδική συμβολοσειρά σε σειρά AARRGGBB (Άλφα, Κόκκινο, Πράσινο, Μπλε). Μην μη συμπεριλάβετε ένα πρόθεμα #.

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

Κοινή αναφορά χρωμάτων AARRGGBB:

ΧρώμαAARRGGBB συμβολοσειράΣημειώσεις
ΜαύροFF000000Προεπιλεγμένο χρώμα γραμματοσειράς
ΛευκόFFFFFFFFΧρήση σε σκούρα φόντα
ΚόκκινοFFFF0000Κείμενο προειδοποίησης ή επισήμανσης
ΜπλεFF0000FFΣύνδεσμοι ή έμφαση
ΠράσινοFF00FF00Θετικές τιμές ή επιτυχία
ΠορτοκαλίFFFF8000Κείμενο προειδοποίησης
ΓκριFF808080Αμυδρό ή απενεργοποιημένο κείμενο
ΝαυτικόFF1E64C8Εταιρικό / μπλε μάρκας

Τα πρώτα δύο δεκαεξαδικά ψηφία είναι το κανάλι άλφα. Χρησιμοποιήστε FF για πλήρως αδιαφανές. Τιμές κάτω από FF παράγουν ημιδιαφανή αποτελέσματα σε renderers που υποστηρίζουν alpha blending.


Βήμα 4: Εφαρμογή έντονου, πλάγιου, υπογράμμισης και διαγραφής

Ορίστε κάθε χαρακτηριστικό άμεσα ως boolean. Τα ονόματα των ιδιοτήτων είναι bold, italic, underline και strikethrough· μην χρησιμοποιήσετε is_bold ή is_italic (αυτά τα ονόματα δεν υπάρχουν στο FOSS API και θα προκαλέσουν 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")

Οι τέσσερις σημαίες έχουν προεπιλογή False. Μπορούν να συνδυαστούν ελεύθερα στο ίδιο κελί.


Βήμα 5: Ορισμός στερεού χρώματος γεμίσματος φόντου

Χρησιμοποιήστε cell.style.fill.set_solid_fill("AARRGGBB") για να εφαρμόσετε γέμισμα φόντου. Η μορφή χρώματος είναι η ίδια 8‑ψήφια αλφαριθμητική AARRGGBB hex όπως το χρώμα γραμματοσειράς.

Για να αφαιρέσετε εντελώς ένα γέμισμα, καλέστε 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() και set_no_fill() είναι αμοιβαία αποκλειστικά· η κλήση του ενός αντικαθιστά το άλλο στο ίδιο κελί.


Βήμα 6: Συνδυάστε πολλαπλά στυλ σε ένα κελί

Μπορείτε να συνδέσετε οποιονδήποτε αριθμό ιδιοτήτων στυλ στην ίδια αναφορά κελιού. Δεν υπάρχει όριο στον αριθμό των χαρακτηριστικών στυλ που ορίζονται πριν από την αποθήκευση.

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

Αυτό παράγει μια λευκή, έντονη ετικέτα Arial 16pt σε σκούρο ναυτικό φόντο, ένα κοινό μοτίβο για τις κεφαλίδες των στηλών.


Βήμα 7: Χρησιμοποιήστε τον Κατασκευαστή Γραμματοσειράς για Επαναχρησιμοποιήσιμα Στυλ

Η κλάση Font μπορεί να δημιουργηθεί με όλες τις ιδιότητές της σε μία κλήση, και στη συνέχεια να ανατεθεί σε πολλαπλά κελιά. Αυτό είναι χρήσιμο όταν θέλετε ένα συνεπές στυλ εταιρείας να εφαρμοστεί σε πολλά κελιά χωρίς να επαναλαμβάνετε τις ίδιες αναθέσεις ιδιοτήτων.

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

Προεπιλεγμένες τιμές κατασκευαστή γραμματοσειράς (όλες οι παράμετροι είναι προαιρετικές):

ΠαράμετροςΠροεπιλογή
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

Πλήρες Παράδειγμα Λειτουργίας

Το παρακάτω αυτόνομο script δημιουργεί ένα βιβλίο εργασίας με μια μορφοποιημένη γραμμή κεφαλίδας, χρωματιστές γραμμές δεδομένων και ένα κελί σύνοψης που επιδεικνύει κάθε 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.")

Κοινά προβλήματα

Λάθος μορφή χρώματος: χρήση #RRGGBB αντί για AARRGGBB

Ένα προπορευόμενο # (π.χ. "#FF0000") ή μια 6‑ψήφια συμβολοσειρά RGB δεν θα παράγει το αναμενόμενο χρώμα. Η ιδιότητα αναμένει ακριβώς 8 δεκαεξαδικά ψηφία χωρίς πρόθεμα: "FFFF0000". Τα πρώτα δύο ψηφία είναι το κανάλι άλφα· χρησιμοποιήστε FF για πλήρως αδιαφανές.

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

Το API FOSS χρησιμοποιεί bold, italic, underline και strikethrough ως ονόματα ιδιοτήτων. Η σύμβαση ονοματοδοσίας is_bold / is_italic ανήκει σε διαφορετική βιβλιοθήκη και δεν υπάρχει εδώ. Αντικαταστήστε οποιαδήποτε αναφορά is_bold με bold.

Οι αλλαγές στυλ δεν είναι ορατές μετά την αποθήκευση

Βεβαιωθείτε ότι ορίζετε τις ιδιότητες στυλ στο αντικείμενο κελιού πριν καλέσετε workbook.save(). Η ρύθμιση μιας ιδιότητας σε ένα κελί μετά την κλήση αποθήκευσης δεν έχει καμία επίδραση στο αρχείο που έχει ήδη γραφτεί. Εάν επαναχρησιμοποιήσετε μια μεταβλητή cell, επιβεβαιώστε ότι εξακολουθεί να αναφέρεται στη σωστή διεύθυνση κελιού.

Το γέμισμα και η γραμματοσειρά στο ίδιο κελί συγκρούονται οπτικά

Δεν υπάρχει σύγκρουση API· μπορείτε πάντα να ορίσετε τόσο το cell.style.font.color όσο και το cell.style.fill.set_solid_fill() ανεξάρτητα. Βεβαιωθείτε ότι το χρώμα του κειμένου έχει επαρκή αντίθεση με το χρώμα του φόντου. Το λευκό κείμενο (FFFFFFFF) σε σκούρο γέμισμα όπως το ναυτικό (FF1E64C8) είναι ένας αξιόπιστος συνδυασμός.


Συχνές Ερωτήσεις

Πώς μπορώ να αφαιρέσω τη γέμιση φόντου και να επαναφέρω ένα κελί χωρίς γέμιση;

Κλήση cell.style.fill.set_no_fill(). Αυτό αφαιρεί οποιαδήποτε προηγουμένως ορισμένη συμπαγή γέμιση από το κελί.

Πώς μπορώ να επαναφέρω ένα κελί στην προεπιλεγμένη γραμματοσειρά (Calibri 11pt μαύρο);

Αναθέστε ξανά τις προεπιλεγμένες τιμές ρητά:

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

Εναλλακτικά, δημιουργήστε μια παρουσία Font() χωρίς ορίσματα (όλες οι προεπιλογές) και εκχωρήστε την: cell.style.font = Font().

Μπορώ να εφαρμόσω το ίδιο στυλ γραμματοσειράς σε μια περιοχή κελιών σε έναν βρόχο;

Ναι. Επαναλάβετε τις διευθύνσεις των κελιών και ορίστε τις ίδιες ιδιότητες σε κάθε ένα. Εάν χρησιμοποιήσετε τον κατασκευαστή Font για να δημιουργήσετε ένα κοινό αντικείμενο Font, αντιστοιχίστε το σε κάθε κελί με ws.cells[addr].style.font = my_font.

Επηρεάζει η μορφοποίηση τις τιμές των κελιών ή τους τύπους;

Όχι. Η μορφοποίηση είναι καθαρά οπτικά μεταδεδομένα. cell.style.font και cell.style.fill δεν αγγίζουν .value ή .formula.

Ποια μορφές αποθήκευσης διατηρούν τα στυλ;

Τα στυλ διατηρούνται πλήρως κατά την αποθήκευση σε SaveFormat.XLSX. Οι μορφές SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON και SaveFormat.MARKDOWN είναι μορφές απλού κειμένου ή δομημένου κειμένου και δεν μεταφέρουν πληροφορίες στυλ.


Σχετικοί Πόροι:

 Ελληνικά