עבודה עם נוסחאות

סקירה

Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.

ישנן שתי דרכים להציב נוסחה בתא:

  1. בונה תא — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula מאפיין — ws.cells["A4"].formula = "=SUM(A1:A3)"

שתי הגישות מאחסנות את אותם הנתונים. צורת הבונה קומפקטית כשאתם בונים גיליון מאפס; צורת המאפיין טבעית יותר כשכבר יש לכם הפנייה לתא קיים ורוצים לצרף אליו נוסחה.


הגדרת נוסחה דרך בונה ה‑Cell

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

הפניות לטווחים משתמשות בתצורת A1 הסטנדרטית של Excel

טווחי שורה-עמודה נכתבים כ- FirstCell:LastCell באמצעות אותיות עמודה גדולות ואותיות ומספרי שורות מבוססי אחד: "A1:A10", "B2:D5", "C3:C3". ה- FOSS הספרייה אינה מתרגמת או מאמתת את מחרוזת הטווח — טווח לא תקין י יאוחסן במדויק ויגרום לשגיאה בקורא הגיליון בזמן הפתיחה.

הנוסחאות מאוחסנות כמחרוזות, ולא מחושבות

Aspose.Cells FOSS does not include a formula engine. If you need the computed תוצאה של נוסחה ב-Python (למשל, לביצוע חישובים נוספים), חשב את הערך בעצמך וכתוב אותו כערך סטטי עם .value. השתמש נוסחאות רק כאשר המשתמש הסופי יפתח את הקובץ ביישום גיליון אלקטרוני שיכולים להעריך אותם.

ראה גם

 עברית