איך לעבוד עם טבלאות ב-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 אינץ’). שקופית סטנדרטית היא ברוחב של 720 נקודות ובגובה של 540 נקודות.
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)שלב 5: הגדר טקסט בתא
גש לתאים דרך 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) <= 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 לקבלת הרשימה המלאה של תכונות עיצוב הגבול.