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

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

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


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

 العربية