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-fossStap 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 rowsStap 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.