العمل مع الصيغ
نظرة عامة
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) | المعامل الثاني هو عدد المنازل العشرية |
يجب أن تبدأ جميع سلاسل الصيغ بـ =. أسماء الدوال غير حساسة لحالة الأحرف في ملفات متوافقة مع 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")عند فتح هذا الملف في إكسل أو 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 install والإعداد
- مدونة: تقديم Aspose.Cells FOSS: نظرة عامة على المكتبة والبدء السريع