Wie man mit Tabellen in Python arbeitet
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.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
pip install aspose-slides-fossSchritt 2: Eine Präsentation erstellen oder öffnen
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)Schritt 3: Spaltenbreiten und Zeilenhöhen festlegen
Tabellen benötigen explizite Spaltenbreiten und Zeilenhöhen in Punkten (1 Punkt = 1/72 Zoll). Eine Standardfolie ist 720 Punkte breit und 540 Punkte hoch.
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 rowsSchritt 4: Die Tabelle hinzufügen
slide.shapes.add_table(x, y, col_widths, row_heights) erstellt die Tabelle an der Position (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)Schritt 5: Zellentext festlegen
Zellen über table.rows[row_index][col_index] und Text über zuweisen .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)Schritt 6: Header-Zellentext formatieren
Fette Formatierung auf Header‑Zellen anwenden mit 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)Vollständiges funktionierendes Beispiel
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")Häufige Probleme und Lösungen
IndexError beim Zugriff auf table.rows[row][col]
Zeilen‑ und Spaltenindizes sind nullbasiert. Wenn Sie definiert row_heights mit 3 Elementen, gültige Zeilenindizes sind 0, 1, 2.
Zellentext erscheint nicht in der gespeicherten Datei
Weisen Sie immer über zu .text_frame.text, nicht über .text direkt am Zellenobjekt:
# Correct
table.rows[0][0].text_frame.text = "Header"
# Wrong: AttributeError or silent failure
table.rows[0][0].text = "Header"Tabellenposition ist außerhalb der Folie
Stellen Sie sicher, dass x + sum(col_widths) <= 720 und y + sum(row_heights) <= 540 für eine Standardfolie.
Häufig gestellte Fragen
Kann ich Tabellenzellen zusammenführen?
Das Zusammenführen von Zellen wird in dieser Edition nicht unterstützt.
Kann ich eine Hintergrundfarbe für die gesamte Tabelle anwenden?
Wenden Sie die Füllformatierung auf jede einzelne Zelle an:
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)Kann ich Zellrandstile festlegen?
Zellrand-Eigenschaften sind über table.rows[row][col].border_* Eigenschaften. Siehe die API-Referenz für die vollständige Liste der Randformat-Attribute.