نحوه کار با جدول‌ها در 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.

راهنمای گام به گام

مرحله ۱: نصب بسته

pip install aspose-slides-foss

مرحله ۲: ایجاد یا باز کردن یک ارائه

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)

مرحله ۳: تعریف عرض ستون‌ها و ارتفاع ردیف‌ها

جدول‌ها نیاز به عرض ستون‌ها و ارتفاع ردیف‌های صریح به واحد پوینت دارند (۱ پوینت = ۱/۷۲ اینچ). یک اسلاید استاندارد عرض ۷۲۰ پوینت و ارتفاع ۵۴۰ پوینت دارد.

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

مرحله ۴: افزودن جدول

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)

مرحله ۶: قالب‌بندی متن سلول سرصفحه

قالب‌بندی بولد را برای سلول‌های سرصفحه با استفاده از 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) <= 720 و y + sum(row_heights) <= 540 برای یک اسلاید استاندارد.


سوالات متداول

آیا می‌توانم سلول‌های جدول را ادغام کنم؟?

ادغام سلول‌ها در این نسخه پشتیبانی نمی‌شود.

آیا می‌توانم رنگ پس‌زمینه‌ای برای کل جدول اعمال کنم؟?

قالب‌گذاری پر کردن را برای هر سلول به‌صورت جداگانه اعمال کنید:

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 مراجعه کنید.


همچنین ببینید

 فارسی