Beheer presentatietabellen in Python
Introductie
Een tabel in PowerPoint is een efficiënte manier om informatie weer te geven. De informatie in een raster van cellen (gerangschikt in rijen en kolommen) is duidelijk en makkelijk te begrijpen.
Aspose.Slides biedt de Tabel klasse, Cel klasse, en andere typen om u in staat te stellen tabellen te maken, bij te werken en te beheren in allerlei presentaties.
Maak een tabel vanaf nul
- Maak een instantie van de Presentatie klasse.
- Krijg een referentie naar een dia op basis van de index.
- Definieer een lijst met kolombreedtes.
- Definieer een lijst met rijhoogtes.
- Voeg een Tabel object toe aan de dia via de addTable methode.
- Itereer door elke Cel om opmaak toe te passen op de boven-, onder-, rechts- en linkerranden.
- Voeg de eerste twee cellen van de eerste rij van de tabel samen.
- Toegang tot een Cel’s TextFrame.
- Voeg wat tekst toe aan het TextFrame.
- Sla de gewijzigde presentatie op.
Deze Python-code toont hoe u een tabel in een presentatie kunt maken:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color
# Instancieert een Presentation-klasse die een PPTX‑bestand vertegenwoordigt
presentation = Presentation()
try:
# Benadert de eerste dia
slide = presentation.getSlides().get_Item(0)
# Definieert kolommen met breedtes en rijen met hoogtes
column_widths = [50, 50, 50]
row_heights = [50, 30, 30, 30, 30]
# Voegt een tabelvorm toe aan de dia
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
# Stelt het randformaat in voor elke cel
for row in table.getRows():
for cell in row:
cell_format = cell.getCellFormat()
cell_format.getBorderTop().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderTop().setWidth(5)
cell_format.getBorderBottom().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderBottom().setWidth(5)
cell_format.getBorderLeft().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderLeft().setWidth(5)
cell_format.getBorderRight().getFillFormat().setFillType(FillType.Solid)
cell_format.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell_format.getBorderRight().setWidth(5)
# Voegt cellen 1 & 2 van rij 1 samen
table.mergeCells(table.getRows().get_Item(0).get_Item(0), table.getRows().get_Item(0).get_Item(1), False)
# Voegt wat tekst toe aan de samengevoegde cel
table.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells")
# Slaat de presentatie op schijf
presentation.save("table.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Nummering in een standaardtabel
In een standaardtabel is de nummering van cellen eenvoudig en nulgebaseerd. De eerste cel in een tabel heeft de index 0,0 (kolom 0, rij 0).
Bijvoorbeeld, de cellen in een tabel met 4 kolommen en 4 rijen worden op deze manier genummerd:
| (0, 0) | (1, 0) | (2, 0) | (3, 0) |
|---|---|---|---|
| (0, 1) | (1, 1) | (2, 1) | (3, 1) |
| (0, 2) | (1, 2) | (2, 2) | (3, 2) |
| (0, 3) | (1, 3) | (2, 3) | (3, 3) |
Deze Python-code toont hoe u een tabel met standaardcelnummering kunt maken:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color
# Instancieert een Presentation-klasse die een PPTX‑bestand vertegenwoordigt
presentation = Presentation()
try:
# Benadert eerste dia
slide = presentation.getSlides().get_Item(0)
# Definieert kolommen met breedtes en rijen met hoogtes
column_widths = [70, 70, 70, 70]
row_heights = [70, 70, 70, 70]
# Voegt een tabelvorm toe aan de dia
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
# Stelt het randformaat in voor elke cel
for row in table.getRows():
for cell in row:
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderTop().setWidth(5)
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderBottom().setWidth(5)
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderLeft().setWidth(5)
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.Solid)
cell.getCellFormat().getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED)
cell.getCellFormat().getBorderRight().setWidth(5)
# Slaat de presentatie op schijf
presentation.save("StandardTables_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Toegang tot een bestaande tabel
-
Maak een instantie van de Presentatie klasse.
-
Krijg een referentie naar de dia die de tabel bevat via de index.
-
Initialiseer een variabele voor een Tabel object en stel deze in op
None. -
Itereer door alle Shape objecten totdat de tabel is gevonden.
Als u vermoedt dat de dia waarmee u werkt slechts één tabel bevat, kunt u eenvoudig alle vormen die erin staan controleren. Wanneer een vorm wordt herkend als een tabel, kunt u deze gebruiken als een Tabel object. Maar als de dia meerdere tabellen bevat, zoekt u beter naar de gewenste tabel via zijn getAlternativeText.
-
Gebruik het Tabel object om met de tabel te werken. In het voorbeeld hieronder werken we de tekst in de eerste kolom van de tweede rij bij.
-
Sla de gewijzigde presentatie op.
Deze Python-code toont hoe u toegang krijgt tot en werkt met een bestaande tabel:
import jpype
import asposeslides
if not jpile.isJVMStarted():
jpile.startJVM()
from asposeslides.api import Presentation, SaveFormat, Table
# Instancieert de Presentation-klasse die een PPTX‑bestand vertegenwoordigt
presentation = Presentation("UpdateExistingTable.pptx")
try:
# Benadert de eerste dia
slide = presentation.getSlides().get_Item(0)
# Initialiseert de tabelreferentie.
table = None
# Gaat door de vormen en stelt een referentie in naar de gevonden tabel
for shape in slide.getShapes():
if isinstance(shape, Table):
table = shape
# Stelt de tekst in voor de eerste kolom van de tweede rij
table.get_Item(0, 1).getTextFrame().setText("New")
# Slaat de gewijzigde presentatie op schijf
presentation.save("table1_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Vind de cel die een TextFrame bezit
Wanneer generieke tekstverwerkingscode een TextFrame van een tabel ontvangt, gebruik dan de TextFrame.getParentCell methode om de eigenaar‑Cel op te halen. Voor een tabel‑cel‑tekstkader geeft TextFrame.getParentCell de eigenaar terug en geeft TextFrame.getParentShape None terug, hoewel de tabel zelf een vorm is.
De celcoördinaten zijn beschikbaar via de alleen‑lezen methoden Cell.getFirstColumnIndex en Cell.getFirstRowIndex. TextFrame.getParentCell biedt eveneens alleen‑lezen navigatie: het retourneert de eigenaar maar wijzigt geen eigendom. Controleer altijd of de geretourneerde cel niet None is voordat u deze gebruikt.
Voor een compleet voorbeeld dat zowel tabel‑cel‑ als vorm‑eigenaars identificeert, inclusief vormen die aan SmartArt‑nodes zijn gekoppeld, zie Search and Replace Text.
Tekst uitlijnen in een tabel
- Maak een instantie van de Presentatie klasse.
- Krijg een referentie naar een dia op basis van de index.
- Voeg een Tabel object toe aan de dia.
- Toegang tot een TextFrame object van de tabel.
- Toegang tot het Paragraph van het TextFrame.
- Lijn de tekst verticaal uit.
- Sla de gewijzigde presentatie op.
Deze Python-code toont hoe u de tekst in een tabel kunt uitlijnen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import FillType, Presentation, SaveFormat, TextAnchorType, TextVerticalType
from java.awt import Color
# Maakt een instantie van de Presentation-klasse
presentation = Presentation()
try:
# Haalt de eerste dia op
slide = presentation.getSlides().get_Item(0)
# Definieert kolommen met breedtes en rijen met hoogtes
column_widths = [120, 120, 120, 120]
row_heights = [100, 100, 100, 100]
# Voegt de tabelvorm toe aan de dia
table = slide.getShapes().addTable(100, 50, column_widths, row_heights)
table.get_Item(1, 0).getTextFrame().setText("10")
table.get_Item(2, 0).getTextFrame().setText("20")
table.get_Item(3, 0).getTextFrame().setText("30")
# Benadert het tekstkader
text_frame = table.get_Item(0, 0).getTextFrame()
# Benadert de eerste alinea in het tekstkader.
paragraph = text_frame.getParagraphs().get_Item(0)
# Benadert het eerste gedeelte in de alinea.
portion = paragraph.getPortions().get_Item(0)
portion.setText("Text here")
portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
# Lijnt de tekst verticaal uit
cell = table.get_Item(0, 0)
cell.setTextAnchorType(TextAnchorType.Center)
cell.setTextVerticalType(TextVerticalType.Vertical270)
# Slaat de presentatie op schijf
presentation.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Tekstopmaak instellen op tabelniveau
- Maak een instantie van de Presentatie klasse.
- Krijg een referentie naar een dia op basis van de index.
- Toegang tot een Tabel object van de dia.
- Stel de lettergrootte van de tekst in met setFontHeight.
- Stel de uitlijning en de rechtermarge in met setAlignment en setMarginRight.
- Stel het verticale teksttype in met setTextVerticalType.
- Sla de gewijzigde presentatie op.
Deze Python-code toont hoe u uw gewenste opmaakopties kunt toepassen op de tekst in een tabel:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ParagraphFormat, PortionFormat, Presentation, SaveFormat, TextAlignment, TextFrameFormat, TextVerticalType, Table
# Maakt een instantie van de Presentation-klasse
presentation = Presentation("simpletable.pptx")
try:
# Laten we aannemen dat de eerste vorm op de eerste dia een tabel is
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, Table):
table = shape
# Stelt de letterhoogte van de tabelcellen in
portion_format = PortionFormat()
portion_format.setFontHeight(25)
table.setTextFormat(portion_format)
# Stelt de tekstuitlijning en rechtermarge van de tabelcellen in één oproep in
paragraph_format = ParagraphFormat()
paragraph_format.setAlignment(TextAlignment.Right)
paragraph_format.setMarginRight(20)
table.setTextFormat(paragraph_format)
# Stelt het verticale teksttype van de tabelcellen in
text_frame_format = TextFrameFormat()
text_frame_format.setTextVerticalType(TextVerticalType.Vertical)
table.setTextFormat(text_frame_format)
presentation.save("result.pptx", SaveFormat.Pptx)
else:
print("The first shape is not a table.")
finally:
presentation.dispose()
Stijl‑eigenschappen van tabel ophalen
Aspose.Slides stelt u in staat de stijl‑eigenschappen van een tabel op te halen zodat u die details voor een andere tabel of elders kunt gebruiken. Deze Python-code toont hoe u de stijl‑eigenschappen uit een vooraf ingestelde tabelstijl kunt verkrijgen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, TableStylePreset
presentation = Presentation()
try:
table = presentation.getSlides().get_Item(0).getShapes().addTable(10, 10, [100, 150], [5, 5, 5])
table.setStylePreset(TableStylePreset.DarkStyle1) # verander het standaard stijlvoorinstellingsthema
# Haalt de stijlvoorinstelling van de tabel op
style_preset = table.getStylePreset()
print("Table style preset: ", style_preset)
# Past de verkregen stijlvoorinstelling toe op een andere tabel
another_table = presentation.getSlides().get_Item(0).getShapes().addTable(10, 100, [100, 150], [5, 5, 5])
another_table.setStylePreset(style_preset)
presentation.save("table.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Verhouding van een tabel vergrendelen
De beeldverhouding van een geometrische vorm is de verhouding tussen de afmetingen in verschillende dimensies. Aspose.Slides biedt de setAspectRatioLocked methode om de instelling voor de beeldverhouding van tabellen en andere vormen te vergrendelen.
Deze Python-code toont hoe u de beeldverhouding voor een tabel kunt vergrendelen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, Table
presentation = Presentation("pres.pptx")
try:
shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
if isinstance(shape, Table):
table = shape
print("Lock aspect ratio set: ", table.getGraphicalObjectLock().getAspectRatioLocked())
table.getGraphicalObjectLock().setAspectRatioLocked(not table.getGraphicalObjectLock().getAspectRatioLocked()) # omkeren
print("Lock aspect ratio set: ", table.getGraphicalObjectLock().getAspectRatioLocked())
presentation.save("pres-out.pptx", SaveFormat.Pptx)
else:
print("The first shape is not a table.")
finally:
presentation.dispose()
FAQ
Kan ik rechts‑naar‑links (RTL) leesrichting inschakelen voor een hele tabel en de tekst in de cellen?
Ja. De tabel stelt een setRightToLeft methode beschikbaar, en alinea’s hebben ParagraphFormat.setRightToLeft. Het gebruik van beide zorgt voor de correcte RTL‑volgorde en weergave binnen cellen.
Hoe kan ik voorkomen dat gebruikers een tabel verplaatsen of de grootte wijzigen in het uiteindelijke bestand?
Gebruik shape locks om verplaatsen, herschalen, selecteren, enz. uit te schakelen. Deze vergrendelingen gelden ook voor tabellen.
Wordt het invoegen van een afbeelding in een cel als achtergrond ondersteund?
Ja. U kunt een picture fill voor een cel instellen; de afbeelding bedekt het celgebied volgens de gekozen modus (strekken of tegel).