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 Schritte

Schritt 1: Installieren des Pakets

pip install aspose-slides-foss

Schritt 2: Erstellen oder Öffnen einer Präsentation

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 definieren

Tabellen erfordern ausdrückliche Spaltenbreiten und Zeilenhöhen in Punkten (1 Punkt = 1/72 Zoll). Eine Standard-Slide ist 960 Punkte breit und 540 Punktes 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: Hinzufügen der Tabelle

slide.shapes.add_table(x, y, col_widths, row_heights) Erstellt die Tabelle in 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: Zelltext einstellen

Zugangszellen über table.rows[row_index][col_index] und Texte über die .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: Format der Zellüberschrifttext

Fettformat auf Kopfzellen verwenden 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 Arbeitsbeispiel

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 die Datenbank table.rows[row][col]

Die Zeilen- und Spaltenindizes sind auf Null basiert. row_heights mit 3 Elementen, gültige Zeilenindizes sind 0, 1, 2.

Zelltext wird nicht in der gespeicherten Datei angezeigt .

Zuweisen Sie immer durch .text_frame.text, nicht durch . .text direkt auf das Zellobjekt:

# Correct
table.rows[0][0].text_frame.text = "Header"

# Wrong: AttributeError or silent failure
table.rows[0][0].text = "Header"

Tischposition ist außerhalb der Folie .

Schau dir das an . x + sum(col_widths) <= 960 und . y + sum(row_heights) <= 540 für eine Standard-Slide.


Häufig gestellte Fragen

Kann ich Tischzellen zusammenführen?

Zellfusion wird in dieser Ausgabe nicht unterstützt.

Kann ich eine Tisch-weite Hintergrundfarbe auftragen?

Anwendungsformatierung für jede einzelne Zelle:

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 die Zellgrenze einstellen?

Zellgrenze Eigenschaften sind über zugänglich table.rows[row][col].border_* Die vollständige Liste der Attribute des Randformats ist im API-Referenzblatt zu finden.


Siehe auch:

 Deutsch