چگونه سلول‌ها را با Aspose.Cells FOSS در Python استایل دهیم

چگونه سلول‌ها را با Aspose.Cells FOSS در Python استایل دهیم

Aspose.Cells FOSS for Python به شما امکان می‌دهد سبک‌های قلم و پرکردن پس‌زمینه را برای سلول‌های جداگانه با استفاده از cell.style.font و cell.style.fill APIها. رنگ‌ها به صورت 8-digit AARRGGBB hex strings;؛ برای مثال "FFFF0000" برای قرمز مات، بدون # پیشوند. تمام استایل‌دهی به‌صورت خالص Python انجام می‌شود و هیچ وابستگی به Microsoft Excel یا کتابخانه رندرینگ خارجی ندارد.

چرا سلول‌ها را با Aspose.Cells FOSS استایل دهیم؟?

  1. بدون نیاز به Excel: قالب‌بندی به‌طور کامل در Python بر روی هر سیستم‌عامل اجرا می‌شود.
  2. مدل رنگی سازگار: یک رشته ۸ رقمی AARRGGBB رنگ قلم و رنگ پرکردن را با همان قالب پوشش می‌دهد.
  3. نام‌های ویژگی قابل خواندن: bold, italic, underline, strikethrough: خیر is_ پیشوند برای به خاطر سپاری.
  4. اشیاء قلم قابل استفاده مجدد: یک مورد ایجاد کنید Font یک نمونه را یک‌بار ایجاد کنید و آن را به سلول‌های متعدد اعمال کنید تا برندینگ سازگار باشد.

راهنمای گام به گام

مرحله ۱: نصب Aspose.Cells FOSS برای Python

pip install aspose-cells-foss

هیچ بستهٔ سیستمی اضافی مورد نیاز نیست. کلاس‌های مورد نیاز خود را از aspose.cells_foss:

from aspose.cells_foss import Workbook, Cell, Font, SaveFormat

مرحله ۲: تنظیم نام و اندازه Font

دسترسی به یک سلول از طریق ws.cells["address"] و نوشتن به cell.style.font.name و cell.style.font.size.

from aspose.cells_foss import Workbook

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

ws.cells["A1"].value = "Styled Header"

cell = ws.cells["A1"]
cell.style.font.name = "Arial"
cell.style.font.size = 14

workbook.save("styled.xlsx")

فونت پیش‌فرض است Calibri با 11pt. هر نام فونتی که در سیستمی که فایل در آن باز می‌شود موجود باشد می‌تواند استفاده شود؛ مشخص کردن فونتی که نصب نشده است خطایی ایجاد نمی‌کند اما ممکن است هنگام باز کردن فایل با یک فونت جایگزین نمایش داده شود.


مرحله ۳: تنظیم رنگ Font با استفاده از رشته هگز AARRGGBB

رنگ‌های فونت با یک 8-digit hexadecimal string در AARRGGBB ترتیب (Alpha, Red, Green, Blue). انجام نکنید شامل یک # پیشوند.

from aspose.cells_foss import Workbook

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

ws.cells["A1"].value = "Red text"
ws.cells["A1"].style.font.color = "FFFF0000"   # opaque red

ws.cells["A2"].value = "Blue text"
ws.cells["A2"].style.font.color = "FF0000FF"   # opaque blue

ws.cells["A3"].value = "Green text"
ws.cells["A3"].style.font.color = "FF00FF00"   # opaque green

workbook.save("colored_text.xlsx")

مرجع رایج رنگ‌های AARRGGBB:

رنگرشته AARRGGBBیادداشت‌ها
سیاهFF000000رنگ پیش‌فرض فونت
سفیدFFFFFFFFدر پس‌زمینه‌های تاریک استفاده شود
قرمزFFFF0000هشدار یا برجسته‌سازی متن
آبیFF0000FFلینک‌ها یا تأکید
سبزFF00FF00مقادیر مثبت یا موفقیت
نارنجیFFFF8000متن هشدار
خاکستریFF808080متن کم‌رنگ یا غیرفعال
آبی تیرهFF1E64C8آبی شرکتی / برند

دو رقم اول هگز کانال آلفا هستند. استفاده کنید FF برای کاملاً مات. مقادیر زیر FF نتایج نیمه‌شفاف را در رندرهایی که از alpha blending پشتیبانی می‌کنند، تولید می‌کند.


مرحله ۴: اعمال Bold، Italic، Underline و Strikethrough

هر ویژگی را به‌صورت مستقیم به‌عنوان boolean تنظیم کنید. نام‌های ویژگی عبارتند از bold, italic, underline,، و strikethrough; انجام دهید نه استفاده کنید is_bold یا is_italic (این نام‌ها در FOSS API وجود ندارند و باعث خطا می‌شوند AttributeError).

from aspose.cells_foss import Workbook

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

ws.cells["A1"].value = "Bold"
ws.cells["A1"].style.font.bold = True

ws.cells["A2"].value = "Italic"
ws.cells["A2"].style.font.italic = True

ws.cells["A3"].value = "Underline"
ws.cells["A3"].style.font.underline = True

ws.cells["A4"].value = "Strikethrough"
ws.cells["A4"].style.font.strikethrough = True

ws.cells["A5"].value = "Bold + Italic"
ws.cells["A5"].style.font.bold = True
ws.cells["A5"].style.font.italic = True

workbook.save("font_styles.xlsx")

تمام چهار پرچم به‌صورت پیش‌فرض برابر هستند با False. می‌توانند به‌صورت آزاد در همان سلول ترکیب شوند.


مرحله ۵: تنظیم رنگ پرشدگی پس‌زمینهٔ ثابت

استفاده کنید cell.style.fill.set_solid_fill("AARRGGBB") برای اعمال پرکردن پس‌زمینه. قالب رنگ همان رشته هگز ۸ رقمی AARRGGBB است که برای رنگ قلم استفاده می‌شود.

برای حذف کامل پرکردن، فراخوانی کنید cell.style.fill.set_no_fill().

from aspose.cells_foss import Workbook

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

ws.cells["A1"].value = "Navy background"
ws.cells["A1"].style.fill.set_solid_fill("FF1E64C8")   # opaque navy blue

ws.cells["A2"].value = "Light yellow background"
ws.cells["A2"].style.fill.set_solid_fill("FFFFFFCC")   # pale yellow

ws.cells["A3"].value = "No fill"
ws.cells["A3"].style.fill.set_no_fill()                 # remove any fill

workbook.save("cell_fills.xlsx")

set_solid_fill() و set_no_fill() متقابلاً منحصر به‌فرد هستند؛ فراخوانی یکی، دیگری را در همان سلول بازنویسی می‌کند.


مرحله ۶: ترکیب چندین سبک در یک سلول

می‌توانید هر تعداد از ویژگی‌های سبک را به‌صورت زنجیره‌ای بر روی همان ارجاع سلول اعمال کنید. محدودیتی برای تعداد ویژگی‌های سبک قبل از ذخیره‌سازی وجود ندارد.

from aspose.cells_foss import Workbook

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

ws.cells["B2"].value = "Branded Header"

cell = ws.cells["B2"]

##Font
cell.style.font.name  = "Arial"
cell.style.font.size  = 16
cell.style.font.bold  = True
cell.style.font.color = "FFFFFFFF"      # white text

##Background
cell.style.fill.set_solid_fill("FF1E64C8")   # navy fill

workbook.save("branded_header.xlsx")
print("Branded header cell saved.")

این یک برچسب سفید، بولد، ۱۶pt با فونت Arial روی پس‌زمینهٔ نیلی تولید می‌کند که الگوی رایجی برای سرستون‌ها است.


مرحله ۷: استفاده از سازندهٔ Font برای سبک‌های قابل‌استفاده مجدد

کلاس Font می‌تواند در یک فراخوانی با تمام ویژگی‌های خود نمونه‌سازی شود و سپس به چندین سلول اختصاص یابد. این زمانی مفید است که می‌خواهید یک سبک داخلی یکسان بر روی سلول‌های متعدد اعمال شود بدون این‌که تخصیص ویژگی‌های یکسان را تکرار کنید.

from aspose.cells_foss import Workbook, Font

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

##Define a reusable heading font
heading_font = Font(
    name="Arial",
    size=14,
    color="FF1E64C8",   # navy
    bold=True,
    italic=False,
    underline=False,
    strikethrough=False
)

##Define a reusable body font
body_font = Font(
    name="Calibri",
    size=11,
    color="FF000000",   # black (default)
    bold=False,
    italic=False,
    underline=False,
    strikethrough=False
)

##Apply heading font to header row
headers = ["Product", "SKU", "Price", "Stock"]
for col, header in enumerate(headers):
    addr = f"{chr(65 + col)}1"
    ws.cells[addr].value = header
    ws.cells[addr].style.font = heading_font
    ws.cells[addr].style.fill.set_solid_fill("FFE8EFF9")  # light blue tint

##Apply body font to data rows
data = [
    ("Widget A", "WGT-001", 9.99,  150),
    ("Widget B", "WGT-002", 14.99, 87),
    ("Widget C", "WGT-003", 4.49,  320),
]

for row_idx, (name, sku, price, stock) in enumerate(data, start=2):
    ws.cells[f"A{row_idx}"].value = name
    ws.cells[f"B{row_idx}"].value = sku
    ws.cells[f"C{row_idx}"].value = price
    ws.cells[f"D{row_idx}"].value = stock
    for col in "ABCD":
        ws.cells[f"{col}{row_idx}"].style.font = body_font

workbook.save("product_table.xlsx")
print("Product table with reusable fonts saved.")

مقادیر پیش‌فرض سازنده Font (تمام پارامترها اختیاری هستند):

پارامترپیش‌فرض
name"Calibri"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

مثال کامل و عملی

اسکریپت خودکفای زیر یک کتاب‌کار با ردیف سرعنوان سبک‌دار، ردیف‌های داده رنگی، و یک سلول خلاصه ایجاد می‌کند که تمام APIهای استایل‌گذاری پوشش داده شده در بالا را نشان می‌دهد:

from aspose.cells_foss import Workbook, Cell, Font, SaveFormat

workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Report"

##--- Header row (bold, white text on navy background) ---
headers = ["Region", "Q1", "Q2", "Q3", "Q4", "Total"]
for col, text in enumerate(headers):
    addr = f"{chr(65 + col)}1"
    ws.cells[addr].value = text
    ws.cells[addr].style.font.name  = "Arial"
    ws.cells[addr].style.font.size  = 12
    ws.cells[addr].style.font.bold  = True
    ws.cells[addr].style.font.color = "FFFFFFFF"            # white
    ws.cells[addr].style.fill.set_solid_fill("FF1E64C8")    # navy

##--- Data rows ---
data = [
    ("North", 42000, 47500, 53000, 61000),
    ("South", 31000, 28500, 35000, 39000),
    ("East",  55000, 62000, 58000, 71000),
    ("West",  27000, 30000, 33000, 41000),
]

for row_idx, (region, q1, q2, q3, q4) in enumerate(data, start=2):
    ws.cells[f"A{row_idx}"].value = region
    ws.cells[f"B{row_idx}"].value = q1
    ws.cells[f"C{row_idx}"].value = q2
    ws.cells[f"D{row_idx}"].value = q3
    ws.cells[f"E{row_idx}"].value = q4
    # Total formula
    ws.cells[f"F{row_idx}"] = Cell(None, f"=SUM(B{row_idx}:E{row_idx})")
    # Alternate row shading
    if row_idx % 2 == 0:
        for col in "ABCDEF":
            ws.cells[f"{col}{row_idx}"].style.fill.set_solid_fill("FFE8EFF9")

##--- Italic note in a footer cell ---
ws.cells["A7"].value = "All values in USD"
ws.cells["A7"].style.font.italic = True
ws.cells["A7"].style.font.color  = "FF808080"   # gray
ws.cells["A7"].style.font.size   = 9

##--- Strikethrough on a deprecated label ---
ws.cells["A8"].value = "Old metric (deprecated)"
ws.cells["A8"].style.font.strikethrough = True
ws.cells["A8"].style.font.color         = "FF808080"

workbook.save("sales_report_styled.xlsx", SaveFormat.XLSX)
print("Styled sales report saved.")

مشکلات رایج

قالب رنگ نادرست: استفاده از #RRGGBB به‌جای AARRGGBB

یک پیشوند # (مثلاً. "#FF0000") یا یک رشته RGB شش رقمی، رنگ مورد انتظار را تولید نخواهد کرد. این ویژگی دقیقاً انتظار دارد 8 hex digits with no prefix: "FFFF0000". دو رقم اول کانال آلفا هستند؛ از FF برای کاملاً غیر شفاف.

AttributeError: 'Font' object has no attribute 'is_bold'

API متن‌باز از bold, italic, underline, و strikethrough به عنوان نام‌های ویژگی. این is_bold / is_italic قالب نام‌گذاری متعلق به کتابخانه‌ای دیگر است و در اینجا وجود ندارد. هر is_bold مرجع را با bold.

تغییرات سبک پس از ذخیره قابل مشاهده نیستند

اطمینان حاصل کنید که ویژگی‌های سبک را بر روی شیء سلول تنظیم می‌کنید قبل از فراخوانی workbook.save(). تنظیم یک ویژگی بر روی سلول پس از فراخوانی ذخیره، هیچ تأثیری بر فایل قبلاً نوشته‌شده ندارد. اگر یک cell متغیر را دوباره استفاده می‌کنید، تأیید کنید که هنوز به آدرس صحیح سلول اشاره می‌کند.

پر کردن (Fill) و قلم (font) در همان سلول به‌صورت بصری با هم تداخل دارند

هیچ تعارضی در API وجود ندارد؛ شما می‌توانید همیشه هر دو را تنظیم کنید cell.style.font.color و cell.style.fill.set_solid_fill() به‌صورت مستقل. اطمینان حاصل کنید که رنگ متن نسبت به رنگ پس‌زمینه تضاد کافی دارد. متن سفید (FFFFFFFF) روی پس‌زمینهٔ تیره‌ای مانند رنگ سرمه‌ای (FF1E64C8) ترکیبی قابل اعتماد است.


سوالات متداول

چگونه می‌توانم پر کردن پس‌زمینه را حذف کنم و سلول را به حالت بدون پر کردن برگردانم؟?

فراخوانی cell.style.fill.set_no_fill(). این کار هر پر کردن ثابت قبلی تنظیم‌شده را از سلول حذف می‌کند.

چگونه می‌توانم یک سلول را به قلم پیش‌فرض (Calibri 11pt سیاه) بازنشانی کنم؟?

مقادیر پیش‌فرض را به‌صورت صریح دوباره اختصاص دهید:

cell.style.font.name          = "Calibri"
cell.style.font.size          = 11
cell.style.font.color         = "FF000000"
cell.style.font.bold          = False
cell.style.font.italic        = False
cell.style.font.underline     = False
cell.style.font.strikethrough = False

به‌جای آن، یک Font() نمونه بدون آرگومان (همه پیش‌فرض) ایجاد کنید و به آن اختصاص دهید: cell.style.font = Font().

آیا می‌توانم همان سبک قلم را بر روی یک بازه از سلول‌ها در یک حلقه اعمال کنم؟?

بله. بر روی آدرس‌های سلول‌ها تکرار کنید و همان ویژگی‌ها را بر هر کدام تنظیم کنید. اگر از Font سازنده برای ایجاد یک مشترک Font شیء، آن را به هر سلول اختصاص دهید با ws.cells[addr].style.font = my_font.

آیا استایل‌دهی بر مقادیر سلول یا فرمول‌ها تأثیر می‌گذارد؟?

نه. استایل‌گذاری صرفاً متادیتای بصری است. cell.style.font و cell.style.fill دست نزنید .value یا .formula.

کدام فرمت‌های ذخیره‌سازی استایل‌ها را حفظ می‌کنند؟?

استایل‌ها به‌طور کامل هنگام ذخیره‌سازی به SaveFormat.XLSX. این SaveFormat.CSV, SaveFormat.TSV, SaveFormat.JSON, و SaveFormat.MARKDOWN فرمت‌ها فرمت‌های متن ساده یا متن ساختاری هستند و اطلاعات استایل را حمل نمی‌کنند.


منابع مرتبط:

 فارسی