العمل مع الصيغ

نظرة عامة

يخزن 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 مع سلاسل صيغ مثال يمكنك تمريرها مباشرة إلى 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 باستخدام أحرف الأعمدة الكبيرة وأرقام الصفوف التي تبدأ من الواحد: "A1:A10"، "B2:D5"، "C3:C3". لا تقوم مكتبة FOSS بترجمة أو التحقق من صحة سلسلة النطاق — سيتم تخزين نطاق غير صالح كما هو وسيؤدي إلى حدوث خطأ في قارئ جدول البيانات عند الفتح.

الصيغ مخزنة كسلاسل نصية، لا يتم تقييمها

Aspose.Cells FOSS لا يتضمن محرك صيغ. إذا كنت بحاجة إلى النتيجة المحسوبة
لصيغة في بايثون (على سبيل المثال، لإجراء حسابات إضافية)، احسب القيمة بنفسك واكتبها كقيمة ثابتة باستخدام .value. استخدم
الصيغ فقط عندما يفتح المستخدم النهائي الملف في تطبيق جدول بيانات
يمكنه تقييمها.

انظر أيضًا

 العربية