Tabellen in Präsentationen mit Python verwalten
Einführung
Eine Tabelle in PowerPoint ist ein effizientes Mittel, um Informationen darzustellen. Informationen, die in einem Raster aus Zellen (Zeilen und Spalten) angeordnet sind, sind leicht verständlich.
Aspose.Slides stellt die Table‑Klasse, die Cell‑Klasse und weitere zugehörige Typen zur Verfügung, um Tabellen in jeder Präsentation zu erstellen, zu aktualisieren und zu verwalten.
Tabellen von Grund auf erstellen
In diesem Abschnitt wird gezeigt, wie Sie in Aspose.Slides eine Tabelle von Grund auf erstellen, indem Sie einer Folie ein Tabellenshape hinzufügen, deren Zeilen und Spalten definieren und exakte Größen festlegen. Außerdem erfahren Sie, wie Sie Zellen mit Text füllen, Ausrichtung und Rahmen anpassen und das Erscheinungsbild der Tabelle individuell gestalten.
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie sich einen Verweis auf eine Folie anhand ihres Index.
- Definieren Sie ein Array von Spaltenbreiten.
- Definieren Sie ein Array von Zeilenhöhen.
- Fügen Sie der Folie ein Table‑Objekt hinzu.
- Durchlaufen Sie jede Cell und formatieren Sie deren obere, untere, rechte und linke Rahmen.
- Verschmelzen Sie die Zellen der ersten beiden Zeilen und der ersten beiden Spalten zu einer einzigen Zelle.
- Greifen Sie auf das TextFrame einer Cell zu.
- Fügen Sie dem TextFrame Text hinzu.
- Speichern Sie die geänderte Präsentation.
Das folgende Python‑Beispiel zeigt, wie Sie eine Tabelle in einer Präsentation erstellen:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanziiere die Presentation‑Klasse, die eine Präsentationsdatei darstellt.
with slides.Presentation() as presentation:
# Greife auf die erste Folie zu.
slide = presentation.slides[0]
# Definiere Spaltenbreiten und Zeilenhöhen.
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Füge der Folie ein Tabellenshape hinzu.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
# Setze das Rahmenformat für jede Zelle.
for row in table.rows:
for cell in row:
cell.cell_format.border_top.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_top.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_top.width = 5
cell.cell_format.border_bottom.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_bottom.fill_format.solid_fill_color.color= draw.Color.red
cell.cell_format.border_bottom.width = 5
cell.cell_format.border_left.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_left.fill_format.solid_fill_color.color =draw.Color.red
cell.cell_format.border_left.width = 5
cell.cell_format.border_right.fill_format.fill_type = slides.FillType.SOLID
cell.cell_format.border_right.fill_format.solid_fill_color.color = draw.Color.red
cell.cell_format.border_right.width = 5
# Verschmelze Zellen von (Zeile 0, Spalte 0) bis (Zeile 1, Spalte 1).
table.merge_cells(table.rows[0][0], table.rows[1][1], False)
# Füge Text zur zusammengeführten Zelle hinzu.
table.rows[0][0].text_frame.text = "Merged Cells"
# Speichere die Präsentation auf Disk.
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Nummerierung in Standardtabellen
In einer Standardtabelle ist die Zellennummerierung einfach und nullbasiert. Die erste Zelle einer Tabelle hat den Index (0, 0) (Spalte 0, Zeile 0).
Beispielsweise sind in einer Tabelle mit 4 Spalten und 4 Zeilen die Zellen wie folgt nummeriert:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
Das folgende Python‑Beispiel zeigt, wie Sie Zellen anhand dieser nullbasierten Nummerierung referenzieren:
import aspose.slides as slides
with slides.Presentation() as presentation:
# Greife auf die erste Folie zu.
slide = presentation.slides[0]
# Füge eine Tabelle mit 4 Spalten und 4 Zeilen hinzu.
table = slide.shapes.add_table(100, 50, [50, 50, 50, 50], [30, 30, 30, 30])
for row_index in range(len(table.rows)):
for column_index in range(len(table.rows[row_index])):
cell = table.rows[row_index][column_index]
cell.text_frame.text = f"({column_index}, {row_index})"
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Zugriff auf eine vorhandene Tabelle
In diesem Abschnitt erfahren Sie, wie Sie in einer Präsentation eine vorhandene Tabelle finden und damit arbeiten können. Sie lernen, die Tabelle auf einer Folie zu finden, auf ihre Zeilen, Spalten und Zellen zuzugreifen und Inhalt oder Formatierung zu aktualisieren.
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie sich einen Verweis auf die Folie, die die Tabelle enthält, anhand ihres Index.
- Durchlaufen Sie alle Shape‑Objekte, bis Sie die Tabelle finden.
- Verwenden Sie das Table‑Objekt, um mit der Tabelle zu arbeiten.
- Speichern Sie die geänderte Präsentation.
Hinweis
Falls die Folie mehrere Tabellen enthält, ist es besser, die gewünschte Tabelle über derenalternative_text‑Eigenschaft zu suchen.
Das folgende Python‑Beispiel zeigt, wie Sie auf eine vorhandene Tabelle zugreifen und damit arbeiten:
import aspose.pydrawing as draw
import aspose.slides as slides
# Instanziiere die Presentation‑Klasse, um eine PPTX‑Datei zu laden.
with slides.Presentation("sample.pptx") as presentation:
# Greife auf die erste Folie zu.
slide = presentation.slides[0]
table = None
# Durchlaufe die Shapes und referenziere die zuerst gefundene Tabelle.
for shape in slide.shapes:
if isinstance(shape, slides.Table):
table = shape
break
# Setze den Text der ersten Zelle in der ersten Zeile.
if table is not None:
table.rows[0][0].text_frame.text = "Found"
# Speichere die geänderte Präsentation auf Disk.
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Die Zelle finden, die einen TextFrame besitzt
Wenn generischer Textverarbeitungscode ein TextFrame einer Tabelle erhält, verwenden Sie die Eigenschaft TextFrame.parent_cell, um die zugehörige Cell zu ermitteln. Für ein Tabellen‑Zellen‑TextFrame ist TextFrame.parent_cell gesetzt und TextFrame.parent_shape ist None, obwohl die Tabelle selbst ein Shape ist.
Die Zellkoordinaten stehen über die schreibgeschützten Eigenschaften Cell.first_column_index und Cell.first_row_index zur Verfügung. TextFrame.parent_cell ist ebenfalls schreibgeschützt: Sie ermöglicht die Navigation zum Eigentümer, ändert jedoch nichts an der Besitzstruktur. Überprüfen Sie immer, ob die zurückgegebene Zelle None ist, bevor Sie sie verwenden.
Ein vollständiges Beispiel, das Tabellen‑Zellen‑ und Shape‑Eigentümer identifiziert, einschließlich der Shapes, die mit SmartArt‑Knoten verknüpft sind, finden Sie unter Search and Replace Text.
Text in Tabellen ausrichten
Dieser Abschnitt zeigt, wie Sie die Textpositionierung innerhalb von Tabellenzellen mit Aspose.Slides steuern. Sie lernen, den Text vertikal in einer Zelle zu verankern und die Schreibrichtung zu ändern.
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie sich einen Verweis auf die Folie anhand ihres Index.
- Fügen Sie der Folie ein Table‑Objekt hinzu.
- Greifen Sie auf ein Cell‑Objekt der Tabelle zu.
- Zentrieren Sie den Text vertikal in der Zelle und setzen Sie die Textrichtung.
- Speichern Sie die geänderte Präsentation.
Das folgende Python‑Beispiel zeigt, wie Sie den Text in einer Tabelle ausrichten:
import aspose.pydrawing as draw
import aspose.slides as slides
# Erstelle eine Instanz der Presentation‑Klasse.
with slides.Presentation() as presentation:
# Greife auf die erste Folie zu.
slide = presentation.slides[0]
# Definiere Spaltenbreiten und Zeilenhöhen.
column_widths = [40, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Füge ein Tabellenshape zur Folie hinzu.
table = slide.shapes.add_table(100, 50, column_widths, row_heights)
table.rows[0][0].text_frame.text = "Numbers"
table.rows[1][0].text_frame.text = "10"
table.rows[2][0].text_frame.text = "20"
table.rows[3][0].text_frame.text = "30"
# Zentriere den Text und setze die vertikale Ausrichtung.
cell = table.rows[0][0]
cell.text_anchor_type = slides.TextAnchorType.CENTER
cell.text_vertical_type = slides.TextVerticalType.VERTICAL270
# Speichere die Präsentation auf Disk.
presentation.save("aligned_cell.pptx", slides.export.SaveFormat.PPTX)
Textformatierung auf Tabellenebene festlegen
In diesem Abschnitt wird beschrieben, wie Sie in Aspose.Slides Textformatierungen auf Tabellenebene anwenden, sodass jede Zelle einen einheitlichen Stil erbt. Sie lernen, Schriftgrößen, Ausrichtungen und Randabstände global festzulegen.
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Holen Sie sich einen Verweis auf die Folie anhand ihres Index.
- Fügen Sie der Folie ein Table‑Objekt hinzu.
- Legen Sie die Schriftgröße (Schrift‑Höhe) für den Text fest.
- Definieren Sie die Absatz‑Ausrichtung und die Randabstände.
- Setzen Sie die vertikale Text‑Orientierung.
- Speichern Sie die geänderte Präsentation.
Das folgende Python‑Beispiel zeigt, wie Sie Ihre bevorzugten Formatierungsoptionen auf Text in einer Tabelle anwenden:
import aspose.pydrawing as draw
import aspose.slides as slides
# Erstellt eine Instanz der Presentation‑Klasse
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
# Setzt die Schriftgröße für alle Tabellenzellen.
portion_format = slides.PortionFormat()
portion_format.font_height = 25
table.set_text_format(portion_format)
# Setzt rechtsbündigen Text und einen rechten Rand für alle Tabellenzellen.
paragraph_format = slides.ParagraphFormat()
paragraph_format.alignment = slides.TextAlignment.RIGHT
paragraph_format.margin_right = 20
table.set_text_format(paragraph_format)
# Setzt die vertikale Textausrichtung für alle Tabellenzellen.
text_frame_format = slides.TextFrameFormat()
text_frame_format.text_vertical_type = slides.TextVerticalType.VERTICAL
table.set_text_format(text_frame_format)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Vordefinierte Tabellen‑Stile anwenden
Aspose.Slides ermöglicht Ihnen, Tabellen mithilfe vordefinierter Stile direkt im Code zu formatieren. Das Beispiel demonstriert das Erstellen einer Tabelle, das Anwenden eines integrierten Stils und das Speichern des Ergebnisses – ein effizienter Weg, um einheitliche, professionelle Formatierung sicherzustellen.
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(10, 10, [100, 150], [5, 5, 5])
table.style_preset = slides.TableStylePreset.DARK_STYLE1
presentation.save("table.pptx", slides.export.SaveFormat.PPTX)
Seitenverhältnis von Tabellen sperren
Das Seitenverhältnis einer Form ist das Verhältnis ihrer Abmessungen. Aspose.Slides stellt die Eigenschaft aspect_ratio_locked bereit, mit der Sie das Seitenverhältnis für Tabellen und andere Formen sperren können.
Das folgende Python‑Beispiel zeigt, wie Sie das Seitenverhältnis einer Tabelle sperren:
import aspose.pydrawing as draw
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
table = slide.shapes.add_table(20, 20, [100, 50, 30], [30, 50, 30])
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
table.shape_lock.aspect_ratio_locked = not table.shape_lock.aspect_ratio_locked
print(f"Lock aspect ratio set: {table.shape_lock.aspect_ratio_locked}")
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
FAQ
Kann ich die Rechts‑zu‑Links‑(RTL‑)Leserichtung für eine gesamte Tabelle und den Text in ihren Zellen aktivieren?
Ja. Die Tabelle stellt die Eigenschaft right_to_left bereit, und Paragraphen besitzen ParagraphFormat.right_to_left. Die Kombination sorgt für die korrekte RTL‑Reihenfolge und Darstellung innerhalb der Zellen.
Wie kann ich verhindern, dass Benutzer eine Tabelle in der finalen Datei verschieben oder die Größe ändern?
Verwenden Sie shape locks, um das Verschieben, Ändern der Größe, Auswählen usw. zu deaktivieren. Diese Sperren gelten ebenfalls für Tabellen.
Wird das Einfügen eines Bildes als Hintergrund in einer Zelle unterstützt?
Ja. Sie können für eine Zelle eine picture fill festlegen; das Bild deckt dann den Zellenbereich gemäß dem gewählten Modus (Strecken oder Kacheln) ab.