كيفية العمل مع الأقراص في Python

كيفية العمل مع الأقراص في Python

Aspose.Slides FOSS for Python supports creating tables on slides with configurable column widths and row heights. This guide shows how to add a table, populate it with data, and apply basic text formatting to cells.

خطوة بخطوة دليل

الخطوة 1: قم بتثبيت الحزمة

pip install aspose-slides-foss

الخطوة 2: إنشاء أو فتح عرض

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    # ... add table ...
    prs.save("table.pptx", SaveFormat.PPTX)

الخطوة 3: تعريف عرض الأعمدة وارتفاع العمود

تتطلب اللوحات عرضًا صريحًّا في الأعمدة وارتفاع الصفوف في النقاط (1 نقطة = 1/72 بوصة).

col_widths = [200.0, 150.0, 150.0]   # 3 columns: 200pt + 150pt + 150pt
row_heights = [45.0, 40.0, 40.0]     # 3 rows: 45pt header + 40pt data rows

الخطوة 4: إضافة الطاولة

slide.shapes.add_table(x, y, col_widths, row_heights) إنشاء الطاولة في موقف (x, y):

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [200.0, 150.0, 150.0]
    row_heights = [45.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 100, col_widths, row_heights)

    prs.save("table.pptx", SaveFormat.PPTX)

الخطوة الخامسة: إعداد النص الخلوي

الوصول إلى الخلايا عبر table.rows[row_index][col_index] وتوفر النص من خلال .text_frame.text:

import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [200.0, 150.0, 150.0]
    row_heights = [45.0, 40.0, 40.0]
    table = slide.shapes.add_table(50, 100, col_widths, row_heights)

    # Header row (row 0)
    headers = ["Product", "Units Sold", "Revenue"]
    for col, header in enumerate(headers):
        table.rows[0][col].text_frame.text = header

    # Data rows
    data = [
        ["Widget A", "1,200", "$24,000"],
        ["Widget B", "850", "$17,000"],
    ]
    for row_idx, row_data in enumerate(data):
        for col, cell_text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = cell_text

    prs.save("sales-table.pptx", SaveFormat.PPTX)

الخطوة 6: تنسيق عنوان الخلية النص

تطبيق الشكل الجريء على الخلايا الرئيسية باستخدام PortionFormat:

from aspose.slides_foss import NullableBool, FillType
from aspose.slides_foss.drawing import Color

for col in range(len(headers)):
    cell = table.rows[0][col]
    portions = cell.text_frame.paragraphs[0].portions
    if portions:
        fmt = portions[0].portion_format
        fmt.font_bold = NullableBool.TRUE
        fmt.fill_format.fill_type = FillType.SOLID
        fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 255, 255, 255)

نموذج عمل كامل

import aspose.slides_foss as slides
from aspose.slides_foss import NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

data_rows = [
    ["North", "$1.2M", "+8%"],
    ["South", "$0.9M", "+4%"],
    ["East",  "$1.5M", "+12%"],
    ["West",  "$0.7M", "+2%"],
]
headers = ["Region", "Revenue", "Growth"]

with slides.Presentation() as prs:
    slide = prs.slides[0]

    col_widths = [180.0, 140.0, 120.0]
    row_heights = [45.0] + [38.0] * len(data_rows)

    table = slide.shapes.add_table(60, 80, col_widths, row_heights)

    # Header row
    for col, text in enumerate(headers):
        cell = table.rows[0][col]
        cell.text_frame.text = text
        if cell.text_frame.paragraphs and cell.text_frame.paragraphs[0].portions:
            fmt = cell.text_frame.paragraphs[0].portions[0].portion_format
            fmt.font_bold = NullableBool.TRUE

    # Data rows
    for row_idx, row_data in enumerate(data_rows):
        for col, text in enumerate(row_data):
            table.rows[row_idx + 1][col].text_frame.text = text

    prs.save("regional-revenue.pptx", SaveFormat.PPTX)

print("Saved regional-revenue.pptx")

مشكلات و تصحيحات مشتركة

IndexError عند الوصول table.rows[row][col]

العمود والعمود مؤشرات صفر.إذا كنت تعريف row_heights مع 3 عناصر ، فإن مؤشرات التسلسل الحالية هي 0.1 و 2.

لا تظهر النص الخلوي في الملف المحفوظ

دائماً يُعطى من خلال .text_frame.text,لا من خلال .text على الكائنات الخلوية:

# Correct
table.rows[0][0].text_frame.text = "Header"

# Wrong: AttributeError or silent failure
table.rows[0][0].text = "Header"

موقع الطاولة خارج الشريط

انظروا هذا x + sum(col_widths) <= 960 و y + sum(row_heights) <= 540 لـ Slide Standard .


الأسئلة المتكررة

هل يمكنني دمج الخلايا المكتبية؟?

لا يتم دعم الاندماج الخلوي في هذا الإصدار.

هل يمكنني تطبيق لون خلفية واسعة النطاق؟?

تطبيق ملء التنسيق لكل خلية فردية:

for row_idx in range(len(table.rows)):
    for col_idx in range(len(table.rows[row_idx])):
        cell = table.rows[row_idx][col_idx]
        cell.fill_format.fill_type = FillType.SOLID
        cell.fill_format.solid_fill_color.color = Color.from_argb(255, 240, 248, 255)

هل يمكنني وضع أنماط الحدود الخلوية؟?

تتوفر الممتلكات الحدودية عبر table.rows[row][col].border_* الخصائص.التوجه إلى إشارة API لقائمة كاملة من خصائصه تنسيق الحدود.


انظر أيضا

 العربية