Πώς να μορφοποιήσετε κελιά με το 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?
- Δεν απαιτείται Excel: Η μορφοποίηση εκτελείται εξ ολοκλήρου σε Python σε οποιοδήποτε OS.
- Συνεπές μοντέλο χρώματος: Μία ενιαία συμβολοσειρά 8-ψηφίων AARRGGBB καλύπτει το χρώμα γραμματοσειράς και το χρώμα γεμίσματος με την ίδια μορφή.
- Αναγνώσιμα ονόματα ιδιοτήτων:
bold,italic,underline,strikethrough: χωρίς πρόθεμαis_για να θυμάστε. - Επαναχρησιμοποιήσιμα αντικείμενα γραμματοσειράς: Δημιουργήστε μια παρουσία
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" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
Πλήρες Παράδειγμα Λειτουργίας
Το παρακάτω αυτόνομο 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 είναι μορφές απλού κειμένου ή δομημένου κειμένου και δεν μεταφέρουν πληροφορίες στυλ.
Σχετικοί Πόροι:
- Aspose.Cells FOSS for Python: Developer Guide
- Spreadsheet Operations
- How to Load Spreadsheets in Python
- How to Create Charts in Python
- API Reference: Font, Fill, Style
- Product Overview: Περίληψη χαρακτηριστικών και δυνατοτήτων
- Blog: Introducing Aspose.Cells FOSS: Επισκόπηση βιβλιοθήκης και γρήγορη εκκίνηση