كيفية تنسيق الخلايا باستخدام Aspose.Cells FOSS في بايثون
Aspose.Cells FOSS for Python يتيح لك تطبيق أنماط الخط وتعبئات الخلفية على الخلايا الفردية باستخدام cell.style.font و cell.style.fill. يتم التعبير عن الألوان كسلاسل سداسية عشرية 8-digit AARRGGBB hex strings؛ على سبيل المثال "FFFF0000" للون الأحمر غير الشفاف، بدون بادئة #. يتم تنفيذ جميع التنسيقات في بايثون النقي دون الاعتماد على Microsoft Excel أو أي مكتبة عرض خارجية.
لماذا تنسق الخلايا باستخدام Aspose.Cells FOSS؟
- لا حاجة إلى Excel: يتم تنفيذ التنسيق بالكامل في Python على أي نظام تشغيل.
- نموذج لون متسق: سلسلة AARRGGBB ذات 8 أرقام تغطي لون الخط ولون التعبئة بنفس الصيغة.
- أسماء خصائص قابلة للقراءة:
bold،italic،underline،strikethrough: لا حاجة لتذكر بادئةis_. - كائنات خط قابلة لإعادة الاستخدام: أنشئ نسخة
Fontمرة واحدة وطبقها على العديد من الخلايا لضمان علامة تجارية متسقة.
دليل خطوة بخطوة
الخطوة 1: تثبيت Aspose.Cells FOSS للبايثون
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 أرقام بترتيب AARRGGBB (ألفا، أحمر، أخضر، أزرق). لا تقم بتضمين بادئة #.
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 تنتج نتائج شبه شفافة في العارضات التي تدعم دمج ألفا.
الخطوة 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.")هذا ينتج تسمية بيضاء، سميكة، بحجم 16 نقطة وخط 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 أرقام سداسية عشرية بدون بادئة: "FFFF0000". الرقمان الأولان يمثلان قناة ألفا؛ استخدم FF للشفافية الكاملة.
AttributeError: 'Font' object has no attribute 'is_bold'
يستخدم واجهة برمجة التطبيقات FOSS bold، italic، underline، وstrikethrough كأسماء الخصائص. تنسيق التسمية is_bold / is_italic ينتمي إلى مكتبة مختلفة ولا يوجد هنا. استبدل أي إشارة is_bold بـ bold.
التغييرات في النمط غير مرئية بعد الحفظ
تأكد من ضبط خصائص النمط على كائن الخلية قبل استدعاء workbook.save(). ضبط خاصية على خلية بعد استدعاء الحفظ لا يؤثر على الملف المكتوب بالفعل. إذا قمت بإعادة استخدام متغير cell، فتأكد من أنه لا يزال يشير إلى عنوان الخلية الصحيح.
التعبئة والخط في نفس الخلية يتعارضان بصريًا
لا يوجد تعارض في واجهة برمجة التطبيقات؛ يمكنك دائمًا تعيين كل من 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: دليل المطور
- عمليات جداول البيانات
- كيفية تحميل جداول البيانات في بايثون
- كيفية إنشاء المخططات في بايثون
- مرجع API: الخط، التعبئة، النمط
- نظرة عامة على المنتج: ملخص الميزات والقدرات
- مدونة: تقديم Aspose.Cells FOSS: نظرة عامة على المكتبة والبدء السريع