Πώς να μορφοποιήσετε κελιά με 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 σε οποιοδήποτε λειτουργικό σύστημα.
  2. Συνεπές μοντέλο χρώματος: Μια ενιαία 8-ψήφια συμβολοσειρά AARRGGBB καλύπτει το χρώμα γραμματοσειράς και το χρώμα γεμίσματος με την ίδια μορφή.
  3. Αναγνώσιμα ονόματα ιδιοτήτων: bold, italic, underline, strikethrough: όχι is_ πρόθεμα για να θυμάστε.
  4. Επαναχρησιμοποιήσιμα αντικείμενα Font: Δημιουργήστε ένα Font αντίγραφο μία φορά και εφαρμόστε το σε πολλά κελιά για συνεπή επωνυμία.

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

Βήμα 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

Τα χρώματα γραμματοσειράς ορίζονται με ένα 8-digit hexadecimal string σε AARRGGBB σειρά (Alpha, Red, Green, Blue). Κάντε μην συμπεριλάβετε ένα # πρόθεμα.

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 για επαναχρησιμοποιήσιμα στυλ

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

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

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

ΠαράμετροςΠροεπιλογή
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 hex digits with no prefix: "FFFF0000". Οι πρώτες δύο ψηφία είναι το κανάλι άλφα· χρησιμοποιήστε FF για πλήρως αδιαφανές.

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

Το FOSS API χρησιμοποιεί 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() instance χωρίς ορίσματα (όλες οι προεπιλογές) και εκχωρήστε το: cell.style.font = Font().

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

Ναι. Επανάληψη στις διευθύνσεις των κελιών και ορίστε τις ίδιες ιδιότητες σε κάθε μία. Εάν χρησιμοποιήσετε το Font constructor για τη δημιουργία ενός κοινόχρηστου Font object, εκχωρήστε το σε κάθε κελί με 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 μορφές είναι μορφές απλού κειμένου ή δομημένου κειμένου και δεν μεταφέρουν πληροφορίες μορφοποίησης.


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

 Ελληνικά