کار با فرمولها
بررسی کلی
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.
دو روش برای قرار دادن فرمول در یک سلول وجود دارد:
- سازنده سلول —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .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}")فرمولهای رایج اکسل
جدول زیر توابع اکسل پرکاربرد را همراه با رشتههای فرمول نمونه که میتوانید مستقیماً به 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")هنگامی که این فایل در اکسل یا 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 اکسل استفاده میکنند
محدودههای سطر-ستون به صورت FirstCell:LastCell با استفاده از حروف بزرگ ستون و شمارههای سطر یکپایه: "A1:A10", "B2:D5", "C3:C3". نرمافزار آزاد کتابخانه رشته بازه را ترجمه یا اعتبارسنجی نمیکند — یک بازه نامعتبر خواهد بهصورت دقیق ذخیره شود و در زمان باز کردن، خطایی در خوانندهٔ صفحهگسترده ایجاد کند.
فرمولها بهعنوان رشته ذخیره میشوند، نه بهصورت محاسبهشده
Aspose.Cells FOSS does not include a formula engine. If you need the computed نتیجهٔ یک فرمول در Python (به عنوان مثال، برای انجام محاسبات بیشتر)،, مقدار را خودتان محاسبه کنید و بهعنوان مقدار ثابت بنویسید با .value. استفاده کنید فرمولها فقط زمانی که کاربر نهایی فایل را در یک برنامهٔ صفحهگسترده باز میکند که میتواند آنها را ارزیابی کند.
همچنین ببینید
- مرجع API: مستندات کامل کلاس و متد برای
aspose.cells_foss - پایگاه دانش: راهنماییهای گامبهگام مبتنی بر کار
- نمای کلی محصول: خلاصه ویژگیها و قابلیتها
- شروع کار / نصب: نصب pip و راهاندازی
- وبلاگ: معرفی Aspose.Cells FOSS: نمای کلی کتابخانه و شروع سریع