كيفية تنسيق الخلايا باستخدام Aspose.Cells FOSS في Python
Aspose.Cells FOSS for Python يتيح لك تطبيق أنماط الخط وتعبئات الخلفية على الخلايا الفردية باستخدام الـ cell.style.font و cell.style.fill APIs. تُعبّر الألوان كـ 8-digit AARRGGBB hex strings; على سبيل المثال "FFFF0000" للون الأحمر غير الشفاف، بدون # بادئة. يتم كل التنسيق في Python النقي دون أي اعتماد على Microsoft Excel أو أي مكتبة عرض خارجية.
لماذا تنسيق الخلايا باستخدام Aspose.Cells FOSS؟?
- لا يلزم Excel: يتم تنفيذ التنسيق بالكامل في Python على أي نظام تشغيل.
- نموذج ألوان متسق: سلسلة مكوّنة من 8 أرقام AARRGGBB تغطي لون الخط ولون التعبئة بنفس الصيغة.
- أسماء خصائص قابلة للقراءة:
bold,italic,underline,strikethrough: لاis_بادئة لتذكرها. - كائنات الخط القابلة لإعادة الاستخدام: إنشاء
Fontإنشاء نسخة مرة واحدة وتطبيقها على العديد من الخلايا لضمان توحيد العلامة التجارية.
دليل خطوة بخطوة
الخطوة 1: تثبيت Aspose.Cells FOSS لـ Python
pip install aspose-cells-fossلا توجد حزم نظام إضافية مطلوبة. استورد الفئات التي تحتاجها من aspose.cells_foss:
from aspose.cells_foss import Workbook, Cell, Font, SaveFormatالخطوة 2: تعيين اسم الخط وحجمه
الوصول إلى خلية عبر 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. أي اسم خط متاح على النظام الذي سيفتح فيه الملف يمكن استخدامه؛ تحديد خط غير مثبت لا يتسبب في خطأ ولكنه قد يُعرض بخط بديل عند فتح الملف.
الخطوة 3: تعيين لون الخط باستخدام سلسلة سداسية عشرية 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 | أزرق الشركة / العلامة التجارية |
الأرقام السداسية الأولى هي alpha channel. استخدم FF لـ fully opaque. القيم الأقل من FF تنتج نتائج شبه شفافة في العارضات التي تدعم alpha blending.
الخطوة 4: تطبيق الغامق، المائل، التسطير، والشطب
قم بتعيين كل سمة مباشرة كقيمة منطقية. أسماء الخصائص هي bold, italic, underline, و strikethrough; افعل ليس استخدام is_bold أو is_italic (هذه الأسماء غير موجودة في واجهة برمجة التطبيقات FOSS وستؤدي إلى رفع 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. يمكن دمجها بحرية في نفس الخلية.
الخطوة 5: تعيين لون تعبئة خلفية صلبة
استخدم cell.style.fill.set_solid_fill("AARRGGBB") لتطبيق تعبئة خلفية. تنسيق اللون هو نفس سلسلة الست عشري ذات 8 أرقام 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() متعارضان؛ استدعاء أحدهما يتجاوز الآخر في نفس الخلية.
الخطوة 6: دمج أنماط متعددة في خلية واحدة
يمكنك ربط أي عدد من خصائص النمط على نفس مرجع الخلية. لا يوجد حد لعدد خصائص النمط التي يمكن تعيينها قبل الحفظ.
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.")هذا ينتج تسمية بيضاء، غامقة، بحجم 16pt من خط Arial على خلفية زرقاء داكنة، وهو نمط شائع لرؤوس الأعمدة.
الخطوة 7: استخدام مُنشئ الخط للأنماط القابلة لإعادة الاستخدام
ال 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.")القيم الافتراضية لمنشئ الخط (جميع المعلمات اختيارية):
| معامل | افتراضي |
|---|---|
name | "Calibri" |
size | 11 |
color | "FF000000" |
bold | False |
italic | False |
underline | False |
strikethrough | False |
مثال عملي كامل
السكريبت المستقل التالي ينشئ دفتر عمل يحتوي على صف رأس مُنسق، صفوف بيانات ملونة، وخلية ملخص تُظهر كل واجهة برمجة تطبيقات التنسيق التي تم تغطيتها أعلاه:
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 مكوّنة من 6 أرقام لن تُنتج اللون المتوقع. الخاصية تتوقع بالضبط 8 hex digits with no prefix: "FFFF0000". أول رقمين هما قناة ألفا؛ استخدم FF للحصول على غير شفاف تمامًا.
AttributeError: 'Font' object has no attribute 'is_bold'
يستخدم FOSS API bold, italic, underline, و strikethrough كأسماء الخصائص. الـ is_bold / is_italic اتفاقية التسمية تنتمي إلى مكتبة مختلفة ولا توجد هنا. استبدل أي is_bold مرجع بـ bold.
التغييرات في النمط غير مرئية بعد الحفظ
تأكد من ضبط خصائص النمط على كائن الخلية قبل استدعاء workbook.save(). ضبط خاصية على خلية بعد استدعاء الحفظ لا يؤثر على الملف المكتوب بالفعل. إذا قمت بإعادة استخدام cell المتغيّر، تأكد من أنه لا يزال يشير إلى عنوان الخلية الصحيح.
التعبئة والخط على نفس الخلية يتعارضان بصريًا
لا يوجد تعارض في 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بدلاً من ذلك، أنشئ a 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: الخط، التعبئة، التنسيق
- نظرة عامة على المنتج: ملخص الميزات والقدرات
- مدونة: تقديم Aspose.Cells FOSS: نظرة عامة على المكتبة والبدء السريع