Hoe te werken met tabellen in Python

Hoe te werken met tabellen in 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.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

pip install aspose-slides-foss

Stap 2: Maak een presentatie of open er een

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)

Stap 3: Definieer kolombreedtes en rijhoogtes

Tabellen vereisen expliciete kolombreedtes en rijhoogtes in punten (1 punt = 1/72 inch). Een standaard dia is 720 punten breed en 540 punten hoog.

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

Stap 4: Voeg de tabel toe

slide.shapes.add_table(x, y, col_widths, row_heights) creërt de tabel op positie (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)

Stap 5: Stel celtekst in

Toegang tot cellen via table.rows[row_index][col_index] en wijs tekst toe via .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)

Stap 6: Formatteer de tekst van de kopcel

Pas vetgedrukte opmaak toe op kopcellen met behulp van 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)

Volledig Werkend Voorbeeld

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")

Veelvoorkomende problemen en oplossingen

IndexError bij het benaderen table.rows[row][col]

Rij- en kolomindexen zijn nulgebaseerd. Als je row_heights met 3 elementen, zijn geldige rij-indexen 0, 1, 2.

Celtekst verschijnt niet in het opgeslagen bestand

Ken altijd toe via .text_frame.text, niet via .text direct op het celobject:

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

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

Tabelpositie ligt buiten de dia

Controleer dat x + sum(col_widths) <= 720 en y + sum(row_heights) <= 540 voor een standaarddia.


Veelgestelde vragen

Kan ik tabelcellen samenvoegen?

Het samenvoegen van cellen wordt niet ondersteund in deze editie.

Kan ik een achtergrondkleur voor de hele tabel toepassen?

Pas vulopmaak toe op elke afzonderlijke cel:

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)

Kan ik de randstijlen van cellen instellen?

Celrand‑eigenschappen zijn toegankelijk via table.rows[row][col].border_* eigenschappen. Raadpleeg de API‑referentie voor de volledige lijst van randopmaak‑attributen.


Zie ook

 Nederlands