Wie man mit Tabellen in Python arbeitet
Aspose.Slides FOSS for Python unterstützt das Erstellen von Tabellen auf Folien mit konfigurierbaren Spaltenbreiten und Zeilenhöhen. Dieser Leitfaden zeigt, wie man eine Tabelle hinzufügt, sie mit Daten füllt und grundlegende Textformatierung auf Zellen anwendet.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
pip install aspose-slides-fossSchritt 2: 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 definieren
Tabellen erfordern 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 rowsSchritt 4: Tabelle hinzufügen
slide.shapes.add_table(x, y, col_widths, row_heights) erstellt die Tabelle an 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
Greifen Sie über table.rows[row_index][col_index] auf Zellen zu und weisen Sie Text über .text_frame.text zu:
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‑Zellen‑Text formatieren
Wenden Sie die fette Formatierung auf Kopfzeilenzellen mit PortionFormat an:
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 table.rows[row][col]
Zeilen- und Spaltenindizes beginnen bei Null. Wenn Sie row_heights mit 3 Elementen definiert haben, sind gültige Zeilenindizes 0, 1, 2.
Zelltext erscheint nicht in der gespeicherten Datei
Weisen Sie immer über .text_frame.text zu, nicht direkt über .text auf dem Zellenobjekt:
# Correct
table.rows[0][0].text_frame.text = "Header"
# Wrong: AttributeError or silent failure
table.rows[0][0].text = "Header"Tabellenposition liegt außerhalb der Folie
Überprüfen Sie, 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 tabellenweite Hintergrundfarbe anwenden?
Füllenformatierung auf jede einzelne Zelle anwenden:
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 die table.rows[row][col].border_*‑Eigenschaften zugänglich. Siehe die API‑Referenz für die vollständige Liste der Randformatattribute.