کار با فرمولها
نمای کلی
Aspose.Cells FOSS فرمولها را به صورت رشتههای سازگار با Excel ذخیره میکند. این کتابخانه فرمولها را بهصورت داخلی ارزیابی نمیکند — عبارت را بهصورت دقیق در فایل حفظ میکند و برنامهٔ صفحهگسترده (Excel، LibreOffice Calc یا هر خوانندهٔ سازگار) هنگام باز شدن فایل، نتیجه را محاسبه میکند.
دو روش برای قرار دادن یک فرمول در یک سلول وجود دارد:
- سازنده سلول —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .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 برای هر سلولی که با Cell(None, formula) ایجاد شده است، None است.
اگر یک کتابکار موجود را که قبلاً با مقادیر محاسبهشده
در کنار فرمولها کش شده بود، بارگذاری کنید، .value ممکن است آخرین نتیجه کششده را برگرداند — اما این
رفتار به این که برنامه منبع فایل را چگونه ذخیره کرده است بستگی دارد و
نباید برای محاسبات جدید به آن اعتماد کرد.
برای تمایز یک سلول فرمول از یک سلول مقدار ساده در زمان اجرا:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")فرمولهای رایج اکسل
جدول زیر توابع اکسل پرکاربرد را همراه با رشتههای فرمول نمونهای که میتوانید مستقیماً به 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) | آرگومان دوم تعداد اعشار است |
تمام رشتههای فرمول باید با = شروع شوند. نام توابع در
فایلهای سازگار با اکسل به حروف بزرگ و کوچک حساس نیستند، اما شکل بزرگحرفی مرسوم برای
خوانایی در بالا نشان داده شده است.
مثال کامل
مثال زیر یک مجموعه داده پنج ردیفی از مقادیر عددی در ستون 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 نوشته میشوند که از حروف بزرگ ستون و شمارههای ردیف یکپایه استفاده میکند: "A1:A10"، "B2:D5"، "C3:C3". کتابخانهٔ FOSS این رشتهٔ محدوده را ترجمه یا اعتبارسنجی نمیکند — یک محدودهٔ نامعتبر به همان شکل ذخیره میشود و در زمان باز کردن، خطایی در خوانندهٔ صفحهگسترده ایجاد میکند.
فرمولها بهعنوان رشته ذخیره میشوند، ارزیابی نمیشوند
Aspose.Cells FOSS شامل موتور فرمول نیست. اگر به نتیجه محاسبهشده
یک فرمول در پایتون (به عنوان مثال برای انجام محاسبات بیشتر) نیاز دارید،
مقدار را خودتان محاسبه کنید و بهعنوان یک مقدار ثابت با .value بنویسید. استفاده
از فرمولها فقط زمانی باشد که کاربر نهایی فایل را در برنامهای صفحهگسترده
که میتواند آنها را ارزیابی کند باز میکند.
همچنین ببینید
- API Reference: مستندات کامل کلاس و متد برای
aspose.cells_foss - Knowledge Base: راهنماهای کار‑محور
- Product Overview: خلاصه ویژگیها و قابلیتها
- Getting Started / Installation: نصب pip و راهاندازی
- Blog: Introducing Aspose.Cells FOSS: نمای کلی کتابخانه و شروع سریع