Wie man mit Tabellen in Python arbeitet

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-foss

Schritt 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 rows

Schritt 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.


Siehe auch

 Deutsch