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