کار با سلول‌ها

نمای کلی

هر برگه کاری یک مجموعه cells را افشا می‌کند که رشته‌های آدرس به سبک اکسل (مانند "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 هر مقدار اسکالر پایتون را می‌پذیرد. کتابخانه نوع پایتون را همان‌گونه ذخیره می‌کند؛ هیچ تبدیل ضمنی در زمان نوشتن رخ نمی‌دهد.


استفاده از سازنده سلول

سازنده 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 را پاس می‌کنید سلول بدون مقدار ذخیره می‌شود، که وقتی قصد دارید فرمول را جداگانه تنظیم کنید یا سلول خالی صریحاً بخواهید به جای اینکه غیاب داشته باشد، مفید است.


سلول‌های فرمول

یک سلول فرمول، رشته‌ی عبارت سازگار با اکسل را همراه با (یا به جای) یک مقدار ثابت ذخیره می‌کند. دو روش برای ایجاد آن وجود دارد.

از طریق سازنده Cell — مقدار 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)

رشته‌های فرمول باید با = شروع شوند. کتابخانه آن‌ها را به همان صورت ذخیره می‌کند؛ اکسل (یا یک خواننده سازگار) عبارت را هنگام باز شدن فایل ارزیابی می‌کند.


تکرار بر داده‌ها

از یک حلقه استاندارد پایتون برای پر کردن یک ستون یا ردیف از یک لیست استفاده کنید:

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) به‌صورت تمیزی بر شماره‌های ردیف اکسل نگاشته می‌شود زیرا ردیف‌های اکسل از ۱ شروع می‌شوند. شروع از start=2 ردیف ۱ را برای سرصفحه رزرو می‌کند.


انواع مقادیر ترکیبی

مثال کامل زیر یک مجموعه داده کوچک را با یک ردیف سرصفحه متنی، سه ردیف داده شامل اعداد صحیح، اعداد اعشاری و رشته‌ها، و یک ردیف فرمول که ستون‌های عددی را خلاصه می‌کند، می‌سازد.

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}")

همچنین ببینید

 فارسی