Εργασία με Τύπους

Επισκόπηση

Το Aspose.Cells FOSS αποθηκεύει τους τύπους ως συμβολοσειρές συμβατές με το Excel. Η βιβλιοθήκη δεν αξιολογεί τους τύπους εσωτερικά — διατηρεί την έκφραση ακριβώς όπως είναι στο αρχείο, και η εφαρμογή λογιστικού φύλλου (Excel, LibreOffice Calc ή οποιονδήποτε συμβατό αναγνώστη) υπολογίζει το αποτέλεσμα όταν ανοίγεται το αρχείο.

Υπάρχουν δύο τρόποι για να τοποθετήσετε έναν τύπο σε ένα κελί:

  1. Κατασκευαστής κελιούws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula ιδιότηταws.cells["A4"].formula = "=SUM(A1:A3)"

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


Ορισμός τύπου μέσω του κατασκευαστή κελιού

Η υπογραφή του κατασκευαστή Cell είναι Cell(value, formula). Για να δημιουργήσετε ένα καθαρό κελί τύπου, περάστε None ως τιμή και τη συμβολοσειρά έκφρασης ως το δεύτερο όρισμα:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)

##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")

workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")

Ο ορισμός value=None καθιστά σαφές ότι το κελί δεν έχει στατική τιμή — το εμφανιζόμενο περιεχόμενό του προέρχεται εξ ολοκλήρου από τον τύπο. Η μεταβίβαση μιας μη None τιμής μαζί με έναν τύπο επιτρέπεται αλλά είναι ασυνήθιστη· οι περισσότεροι αναγνώστες λογιστικών φύλλων θα εμφανίσουν το αποτέλεσμα του τύπου και θα αγνοήσουν την αποθηκευμένη τιμή.


Ορισμός τύπου μέσω της .formula Ιδιότητας

Αναθέστε απευθείας στο cell.formula όταν ήδη έχετε μια αναφορά κελιού ή όταν θέλετε να προσθέσετε έναν τύπο σε ένα κελί που είχε προηγουμένως γραφτεί με τιμή:

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
    ws.cells[f"A{i}"].value = val

##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"

##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"

workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")

Ανάγνωση τύπου προς τα πίσω

Αφού γράψετε ένα κελί τύπου, χρησιμοποιήστε .formula για να ανακτήσετε τη συμβολοσειρά της έκφρασης και .value για να ανακτήσετε οποιαδήποτε στατική τιμή (αν υπάρχει) που αποθηκεύτηκε μαζί του.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")

cell = ws.cells["A1"]

print(cell.formula)   # =SUM(B1:B5)
print(cell.value)     # None  (no static value was set)

Στην πράξη, .value είναι None για οποιοδήποτε κελί που δημιουργείται με Cell(None, formula). Εάν φορτώσετε ένα υπάρχον βιβλίο εργασίας που είχε προηγουμένως αποθηκευτεί με υπολογισμένες τιμές αποθηκευμένες στην προσωρινή μνήμη μαζί με τους τύπους, .value μπορεί να επιστρέψει το τελευταίο αποθηκευμένο αποτέλεσμα — αλλά αυτή συμπεριφορά εξαρτάται από το πώς η αρχική εφαρμογή αποθήκευσε το αρχείο και πρέπει να μην βασίζεται για νέους υπολογισμούς.

Για να διακρίνετε ένα κελί τύπου από ένα κελί απλής τιμής κατά την εκτέλεση:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula cell: {cell.formula}")
else:
    print(f"Value cell: {cell.value}")

Κοινοί Τύποι Excel

Ο παρακάτω πίνακας παραθέτει συχνά χρησιμοποιούμενες συναρτήσεις Excel με παραδείγματα συμβολοσειρών τύπων που μπορείτε να περάσετε απευθείας στο Aspose.Cells FOSS.

ΣκοπόςΣυμβολοσειρά τύπουΣημειώσεις
Άθροισμα περιοχής=SUM(A1:A10)Προσθέτει όλες τις αριθμητικές τιμές στην περιοχή
Μέσος όρος περιοχής=AVERAGE(A1:A10)Αγνοεί κενά κελιά
Μέγιστη τιμή=MAX(A1:A10)Επιστρέφει τον μεγαλύτερο αριθμό
Ελάχιστη τιμή=MIN(A1:A10)Επιστρέφει τον μικρότερο αριθμό
Καταμέτρηση αριθμητικών κελιών=COUNT(A1:A10)Μετρά μόνο κελιά με αριθμητικές τιμές
Καταμέτρηση μη κενών κελιών=COUNTA(A1:A10)Μετρά οποιοδήποτε μη κενό κελί
Τιμή υπό συνθήκη=IF(A1>100,"High","Low")Τρί-ορίων μορφή: δοκιμή, αποτέλεσμα‑αληθές, αποτέλεσμα‑ψευδές
Κατακόρυφη αναζήτηση=VLOOKUP(D1,A1:B10,2,FALSE)Συνιστάται ακριβής αντιστοίχιση (FALSE)
Συνένωση συμβολοσειρών=CONCATENATE(A1," ",B1)Ή χρησιμοποιήστε =A1&" "&B1
Στρογγυλοποίηση αριθμού=ROUND(A1,2)Το δεύτερο όρισμα είναι τα δεκαδικά ψηφία

Όλες οι συμβολοσειρές τύπων πρέπει να αρχίζουν με =. Τα ονόματα των συναρτήσεων δεν είναι ευαίσθητα σε πεζά/κεφαλαία σε
αρχεία συμβατά με το Excel, αλλά η συμβατική μορφή κεφαλαίων εμφανίζεται παραπάνω για
ευανάγνωστη παρουσίαση.


Πλήρες Παράδειγμα

Το παρακάτω παράδειγμα δημιουργεί ένα σύνολο δεδομένων πέντε γραμμών με αριθμητικές τιμές στη στήλη A, στη συνέχεια γράφει τύπους SUM, AVERAGE, MAX και MIN στη στήλη B, και αποθηκεύει το αποτέλεσμα σε αρχείο XLSX.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"

##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
    ws.cells[f"A{i}"].value = val

##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"

##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")

##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")

Όταν αυτό το αρχείο ανοίξει στο Excel ή στο LibreOffice Calc, η στήλη C θα εμφανίσει:

ΣειράΤύποςΑναμενόμενο αποτέλεσμα
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Σημειώσεις

Οι συμβολοσειρές τύπου πρέπει να ξεκινούν με =

Η βιβλιοθήκη αποθηκεύει τη συμβολοσειρά όπως είναι. Η παράλειψη του αρχικού = προκαλεί το πρόγραμμα ανάγνωσης λογιστικού φύλλου να αντιμετωπίζει το κείμενο ως κυριολεκτική συμβολοσειρά αντί για τύπο.

##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"

##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"

Οι αναφορές περιοχής χρησιμοποιούν την τυπική σημειογραφία Excel A1

Τα εύρη γραμμής‑στήλης γράφονται ως FirstCell:LastCell χρησιμοποιώντας κεφαλαία γράμματα στηλών και αριθμούς γραμμών που ξεκινούν από το 1: "A1:A10", "B2:D5", "C3:C3". Η βιβλιοθήκη FOSS δεν μεταφράζει ούτε επικυρώνει τη συμβολοσειρά εύρους — ένα μη έγκυρο εύρος θα αποθηκευτεί ακριβώς όπως είναι και θα προκαλέσει σφάλμα στον αναγνώστη λογιστικού φύλλου κατά το άνοιγμα.

Οι τύποι αποθηκεύονται ως συμβολοσειρές, χωρίς να αξιολογούνται

Aspose.Cells FOSS δεν περιλαμβάνει μηχανή τύπων. Εάν χρειάζεστε το υπολογισμένο αποτέλεσμα ενός τύπου σε Python (για παράδειγμα, για να κάνετε περαιτέρω υπολογισμούς), υπολογίστε την τιμή μόνοι σας και γράψτε την ως στατική τιμή με .value. Χρησιμοποιήστε τύπους μόνο όταν ο τελικός χρήστης θα ανοίξει το αρχείο σε εφαρμογή λογιστικού φύλλου που μπορεί να τα αξιολογήσει.

Δείτε επίσης

 Ελληνικά