چگونه سلولها را با 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 استایل دهیم؟?
- بدون نیاز به Excel: قالببندی بهطور کامل در Python بر روی هر سیستمعامل اجرا میشود.
- مدل رنگی سازگار: یک رشته ۸ رقمی AARRGGBB رنگ قلم و رنگ پرکردن را با همان قالب پوشش میدهد.
- نامهای ویژگی قابل خواندن:
bold,italic,underline,strikethrough: خیرis_پیشوند برای به خاطر سپاری. - اشیاء قلم قابل استفاده مجدد: یک مورد ایجاد کنید
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" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
مثال کامل و عملی
اسکریپت خودکفای زیر یک کتابکار با ردیف سرعنوان سبکدار، ردیفهای داده رنگی، و یک سلول خلاصه ایجاد میکند که تمام 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 فرمتها فرمتهای متن ساده یا متن ساختاری هستند و اطلاعات استایل را حمل نمیکنند.
منابع مرتبط:
- Aspose.Cells FOSS for Python: Developer Guide
- عملیات صفحهگسترده
- چگونه صفحهگستردهها را در Python بارگذاری کنیم
- چگونه نمودارها را در Python ایجاد کنیم
- مرجع API: Font, Fill, Style
- نمای کلی محصول: خلاصه ویژگیها و قابلیتها
- وبلاگ: معرفی Aspose.Cells FOSS: مروری بر کتابخانه و شروع سریع