العمل مع الخلايا

العمل مع الخلايا

نظرة عامة

كل ورقة عمل تعرض cells مجموعة تُطابق سلاسل عناوين على نمط Excel (مثل "A1", "B3") Cell كائنات. يمكنك الوصول إلى خلية مباشرةً عبر الفهرس:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Access a cell by address
cell = ws.cells["A1"]

القيم، الصيغ، ومعلومات النمط كلها موجودة على الـ Cell كائن. يمكنك إما تعديل خلية في مكانها بكتابة إلى .value أو .formula خاصية،, أو استبدال الخلية بالكامل عن طريق تعيين جديد Cell مثال إلى العنوان.


قراءة وكتابة القيم

تعيين إلى cell.value لكتابة سلسلة أو عدد صحيح أو عدد عشري. اقرأ نفس الخاصية مرة أخرى لاسترجاع ما تم تخزينه.

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

##Write a string
ws.cells["A1"].value = "Hello, world"

##Write an integer
ws.cells["A2"].value = 42

##Write a float
ws.cells["A3"].value = 3.14159

##Read values back
print(ws.cells["A1"].value)   # Hello, world
print(ws.cells["A2"].value)   # 42
print(ws.cells["A3"].value)   # 3.14159

workbook.save("values_demo.xlsx")

ال .value الخاصية تقبل أي قيمة عددية Python. المكتبة تخزن الـ نوع Python كما هو؛ لا يحدث تحويل ضمني عند وقت الكتابة.


استخدام مُنشئ Cell

ال Cell المُنشئ يتيح لك إنشاء خلية بقيمة (وباختياري الصيغة) في تعبير واحد. عيّن الناتج Cell الكائن إلى المؤشر الفرعي للعنوان لوضعه في الورقة.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Integer cell
ws.cells["A1"] = Cell(42)

##String cell
ws.cells["A2"] = Cell("Revenue")

##Float cell
ws.cells["A3"] = Cell(3.14)

##Explicitly empty cell (no value, no formula)
ws.cells["A4"] = Cell(None)

workbook.save("cell_constructor_demo.xlsx")

الوسيط الموضع الأول لـ Cell هو القيمة. عندما تمرر None ال الخلية تُخزن بدون قيمة، وهو مفيد عندما تنوي تعيين صيغة بشكل منفصل أو تريد خلية فارغة صريحة بدلاً من عدم وجودها.


خلايا الصيغ

خلية الصيغة تخزن سلسلة تعبير متوافقة مع Excel إلى جانب (أو بدلاً من) قيمة ثابتة. هناك طريقتان لإنشائها.

عبر مُنشئ الخلية — تمرير None كالقيمة وسلسلة الصيغة كالمعامل الثاني:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(20)
ws.cells["A3"] = Cell(30)

##Formula via constructor: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")

workbook.save("formula_constructor.xlsx")

عبر الـ .formula خاصية — ضبط الخاصية على خلية موجودة:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

for i, v in enumerate([5, 10, 15, 20, 25], start=1):
    ws.cells[f"A{i}"].value = v

ws.cells["B1"].formula = "=AVERAGE(A1:A5)"

workbook.save("formula_property.xlsx")

مرجع سريع للصيغ الشائعة

الغرضسلسلة الصيغة
جمع نطاق=SUM(A1:A10)
متوسط نطاق=AVERAGE(A1:A10)
القيمة القصوى=MAX(A1:A10)
القيمة الدنيا=MIN(A1:A10)
عدد غير الفارغ=COUNT(A1:A10)
قيمة شرطية=IF(A1>0,"Positive","Non-positive")
البحث عن قيمة=VLOOKUP(D1,A1:B10,2,FALSE)
دمج السلاسل=CONCATENATE(A1," ",B1)

يجب أن تبدأ سلاسل الصيغ بـ =. تقوم المكتبة بتخزينها كما هي؛ إكسل (أو قارئ متوافق) يقوم بتقييم التعبير عند فتح الملف.


التكرار على البيانات

استخدم حلقة Python القياسية لملء عمود أو صف من قائمة:

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

monthly_sales = [12_500, 14_200, 9_800, 17_600, 21_100, 18_400]

##Write a header
ws.cells["A1"].value = "Monthly Sales"

##Write data starting at row 2 (index 1 → address A2)
for i, val in enumerate(monthly_sales, start=2):
    ws.cells[f"A{i}"].value = val

##Write a SUM formula below the data
last_row = 1 + len(monthly_sales)  # row index of last data cell
ws.cells[f"A{last_row + 1}"].formula = f"=SUM(A2:A{last_row})"

workbook.save("monthly_sales.xlsx")

ال enumerate(iterable, start=N) النمط يتطابق بشكل نظيف مع أرقام صفوف إكسل لأن صفوف إكسل تبدأ من 1. بدءًا من start=2 يخصص الصف 1 لـ رأس.


أنواع القيم المختلطة

المثال الكامل التالي يُنشئ مجموعة بيانات صغيرة تحتوي على صف عنوان نصي، وثلاثة صفوف بيانات تحتوي على أعداد صحيحة، وأعداد عائمة، وسلاسل نصية، وصف صيغ يلخص الأعمدة الرقمية.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Header row ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Units Sold"
ws.cells["C1"].value = "Unit Price"
ws.cells["D1"].value = "Revenue"

##--- Data rows ---
##Row 2
ws.cells["A2"] = Cell("Widget A")
ws.cells["B2"] = Cell(120)
ws.cells["C2"] = Cell(9.99)
ws.cells["D2"] = Cell(None, "=B2*C2")

##Row 3
ws.cells["A3"] = Cell("Widget B")
ws.cells["B3"] = Cell(85)
ws.cells["C3"] = Cell(14.50)
ws.cells["D3"] = Cell(None, "=B3*C3")

##Row 4
ws.cells["A4"] = Cell("Widget C")
ws.cells["B4"] = Cell(200)
ws.cells["C4"] = Cell(4.75)
ws.cells["D4"] = Cell(None, "=B4*C4")

##--- Summary row ---
ws.cells["A5"].value = "TOTAL"
ws.cells["B5"] = Cell(None, "=SUM(B2:B4)")
ws.cells["D5"] = Cell(None, "=SUM(D2:D4)")

workbook.save("mixed_types_dataset.xlsx")
print("Saved mixed_types_dataset.xlsx")

بعد فتح الملف في إكسل (أو أي تطبيق جدول بيانات متوافق)،, ال D العمود وال B5 / D5 ستعرض الخلايا النتائج المُقَيَّمة لتعبيرات الصيغ.


نصائح

None القيمة مقابل السلسلة الفارغة

Cell(None) و ws.cells["A1"].value = None إنشاء خلية بدون قيمة مخزنة قيمة — لا يمكن تمييزها عن خلية لم تُكتب أبداً في معظم جداول البيانات القارئات. Cell("") أو ws.cells["A1"].value = "" إنشاء خلية صريحة تحتوي على سلسلة فارغة، والتي يتعامل معها بعض القارئات والصيغ بشكل مختلف (على سبيل المثال،, =COUNT يتجاهل خلايا السلسلة الفارغة بنفس الطريقة التي يتجاهل بها الخلايا الفارغة الخلايا، لكن =COUNTA يعدّها).

سلسلة الصيغة مقابل القيمة الثابتة

قراءة .value من خلية الصيغة تُعيد None (أو القيمة المخزنة الأخيرة إذا تم تعيين واحدة قبل تعيين الصيغة). القراءة .formula يعيد سلسلة التعبير. إذا كنت بحاجة إلى التمييز بين خلية الصيغة و خلية القيمة العادية أثناء التشغيل، تحقق مما إذا كان ws.cells["A1"].formula غير فارغ:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula: {cell.formula}")
else:
    print(f"Value: {cell.value}")

انظر أيضًا

 العربية