كيفية تنسيق الخلايا باستخدام Aspose.Cells FOSS في بايثون

كيفية تنسيق الخلايا باستخدام 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؟

  1. لا حاجة إلى Excel: يتم تنفيذ التنسيق بالكامل في Python على أي نظام تشغيل.
  2. نموذج لون متسق: سلسلة AARRGGBB ذات 8 أرقام تغطي لون الخط ولون التعبئة بنفس الصيغة.
  3. أسماء خصائص قابلة للقراءة: bold، italic، underline، strikethrough: لا حاجة لتذكر بادئة is_.
  4. كائنات خط قابلة لإعادة الاستخدام: أنشئ نسخة 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"
size11
color"FF000000"
boldFalse
italicFalse
underlineFalse
strikethroughFalse

مثال عملي كامل

البرنامج النصي المستقل التالي ينشئ مصنفًا يحتوي على صف رأس مُنسق، وصفوف بيانات ملونة، وخلية ملخص تُظهر كل واجهة برمجة تطبيقات التنسيق المذكورة أعلاه:

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 هي تنسيقات نصية عادية أو نصية مُهيكلة ولا تحمل معلومات تنسيق.


الموارد ذات الصلة:

 العربية