Beheer presentatietabellen in Java
Inleiding
Een tabel in PowerPoint is een efficiënte manier om informatie weer te geven en te presenteren. De informatie in een raster van cellen (geordend in rijen en kolommen) is duidelijk en gemakkelijk te begrijpen.
Aspose.Slides biedt de klasse Table, de interface ITable, de klasse Cell en de interface ICell en andere typen waarmee u tabellen kunt maken, bijwerken en beheren in allerlei presentaties.
Maak een tabel vanaf nul
- Maak een instantie van de klasse Presentation aan.
- Haal een referentie naar een dia op via de index.
- Definieer een array van
columnWidth. - Definieer een array van
rowHeight. - Voeg een ITable object toe aan de dia via de methode addTable.
- Itereer door elke ICell om opmaak toe te passen op de boven-, onder-, rechter- en linkergrenzen.
- Voeg de eerste twee cellen van de eerste rij van de tabel samen.
- Toegang tot de TextFrame van een ICell.
- Voeg wat tekst toe aan de TextFrame.
- Sla de aangepaste presentatie op.
Deze Java‑code laat zien hoe u een tabel in een presentatie maakt:
import com.aspose.slides.*;
import java.awt.Color;
// Instantieert een Presentation-klasse die een PPTX-bestand voorstelt
Presentation pres = new Presentation();
try {
// Haalt de eerste dia op
ISlide sld = pres.getSlides().get_Item(0);
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = {50, 50, 50};
double[] dblRows = {50, 30, 30, 30, 30};
// Voegt een tabelshape toe aan de dia
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
for (int row = 0; row < tbl.getRows().size(); row++)
{
for (int cell = 0; cell < tbl.getRows().get_Item(row).size(); cell++)
{
ICellFormat cellFormat = tbl.getRows().get_Item(row).get_Item(cell).getCellFormat();
cellFormat.getBorderTop().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderTop().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderTop().setWidth(5);
cellFormat.getBorderBottom().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderBottom().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderBottom().setWidth(5);
cellFormat.getBorderLeft().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderLeft().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderLeft().setWidth(5);
cellFormat.getBorderRight().getFillFormat().setFillType(FillType.Solid);
cellFormat.getBorderRight().getFillFormat().getSolidFillColor().setColor(Color.RED);
cellFormat.getBorderRight().setWidth(5);
}
}
// Voegt de cellen 1 en 2 van rij 1 samen
tbl.mergeCells(tbl.getRows().get_Item(0).get_Item(0), tbl.getRows().get_Item(0).get_Item(1), false);
// Voegt wat tekst toe aan de samengevoegde cel
tbl.getRows().get_Item(0).get_Item(0).getTextFrame().setText("Merged Cells");
// Slaat de presentatie op naar schijf
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Nummering in een standaardtabel
In een standaardtabel is de nummering van cellen eenvoudig en nulgebaseerd. De eerste cel in een tabel heeft index 0,0 (kolom 0, rij 0).
Voorbeeld: de cellen in een tabel met 4 kolommen en 4 rijen worden als volgt 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 Java‑code laat zien hoe u de nummering voor cellen in een tabel opgeeft:
import com.aspose.slides.*;
import java.awt.Color;
// Instantieert een Presentation-klasse die een PPTX-bestand vertegenwoordigt
Presentation pres = new Presentation();
try {
// Haalt de eerste dia op
ISlide sld = pres.getSlides().get_Item(0);
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Voegt een tabelshape toe aan de dia
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
for (IRow row : tbl.getRows())
{
for (ICell cell : 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 naar schijf
pres.save("StandardTables_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Toegang tot een bestaande tabel
-
Maak een instantie van de klasse Presentation aan.
-
Haal een referentie op naar de dia die de tabel bevat via de index.
-
Maak een ITable object aan en stel het in op null.
-
Itereer door alle IShape objecten totdat de tabel gevonden is.
Als u vermoedt dat de dia die u bewerkt één tabel bevat, kunt u eenvoudig alle shapes die de dia bevat controleren. Wanneer een shape wordt geïdentificeerd als een tabel, kunt u deze casten naar een Table object. Bevat de dia echter meerdere tabellen, dan kunt u beter zoeken naar de gewenste tabel via de methode setAlternativeText(String value).
-
Gebruik het ITable object om met de tabel te werken. In het onderstaande voorbeeld hebben we een nieuwe rij aan de tabel toegevoegd.
-
Sla de aangepaste presentatie op.
Deze Java‑code laat zien hoe u toegang krijgt tot en werkt met een bestaande tabel:
import com.aspose.slides.*;
// Instancieert de Presentation-klasse die een PPTX-bestand vertegenwoordigt
Presentation pres = new Presentation("UpdateExistingTable.pptx");
try {
// Haalt de eerste dia op
ISlide sld = pres.getSlides().get_Item(0);
// Initialiseert null TableEx
ITable tbl = null;
// Itereert door de shapes en stelt een referentie naar de gevonden tabel in
for (IShape shp : sld.getShapes())
{
if (shp instanceof ITable)
{
tbl = (ITable) shp;
// Stelt de tekst in voor de eerste kolom van de tweede rij
tbl.get_Item(0, 1).getTextFrame().setText("New");
}
}
// Slaat de gewijzigde presentatie op naar schijf
pres.save("table1_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Zoek de cel die een TextFrame bezit
Wanneer generieke tekstverwerkingscode een ITextFrame van een tabel ontvangt, gebruik dan de methode ITextFrame.getParentCell om de eigenaar‑ICell op te halen. Voor een tabelcel‑tekstframe geeft ITextFrame.getParentCell de eigenaar terug en geeft ITextFrame.getParentShape null terug, ook al is de tabel zelf een shape.
De celformaatcoördinaten zijn beschikbaar via de read‑only methoden ICell.getFirstColumnIndex en ICell.getFirstRowIndex. ITextFrame.getParentCell biedt bovendien read‑only navigatie: het retourneert de eigenaar maar verandert de eigendom niet. Controleer altijd of de geretourneerde cel niet null is voordat u deze gebruikt.
Voor een volledig voorbeeld dat tabelcel‑ en shape‑eigenaars identificeert, inclusief shapes die aan SmartArt‑knooppunten zijn gekoppeld, zie Search and Replace Text.
Tekst uitlijnen in een tabel
- Maak een instantie van de klasse Presentation aan.
- Haal een referentie naar een dia op via de index.
- Voeg een ITable object toe aan de dia.
- Haal een ITextFrame object op vanuit de tabel.
- Haal de IParagraph van het ITextFrame op.
- Lijn de tekst verticaal uit.
- Sla de aangepaste presentatie op.
Deze Java‑code laat zien hoe u de tekst in een tabel uitlijnt:
import com.aspose.slides.*;
import java.awt.Color;
// Maakt een instantie van de Presentation-klasse
Presentation pres = new Presentation();
try {
// Haalt de eerste dia op
ISlide slide = pres.getSlides().get_Item(0);
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 120, 120, 120, 120 };
double[] dblRows = { 100, 100, 100, 100 };
// Voegt de tabelshape toe aan de dia
ITable tbl = slide.getShapes().addTable(100, 50, dblCols, dblRows);
tbl.get_Item(1, 0).getTextFrame().setText("10");
tbl.get_Item(2, 0).getTextFrame().setText("20");
tbl.get_Item(3, 0).getTextFrame().setText("30");
// Haalt het tekstframe op
ITextFrame txtFrame = tbl.get_Item(0, 0).getTextFrame();
// Maakt het Paragraph-object voor het tekstframe
IParagraph paragraph = txtFrame.getParagraphs().get_Item(0);
// Maakt het Portion-object voor de alinea
IPortion 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
ICell cell = tbl.get_Item(0, 0);
cell.setTextAnchorType(TextAnchorType.Center);
cell.setTextVerticalType(TextVerticalType.Vertical270);
// Slaat de presentatie op naar schijf
pres.save("Vertical_Align_Text_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tekstopmaak instellen op tabelniveau
- Maak een instantie van de Presentation klasse.
- Haal een referentie naar een dia op via de index.
- Haal een ITable object op vanuit de dia.
- Stel de methode setFontHeight(float value) in voor de tekst.
- Stel de methoden setAlignment(int value) en setMarginRight(float value) in.
- Stel de methode setTextVerticalType(byte value) in.
- Sla de aangepaste presentatie op.
Deze Java‑code laat zien hoe u uw voorkeurs‑opmaakopties toepast op de tekst in een tabel:
import com.aspose.slides.*;
// Maakt een instantie van de Presentation-klasse
Presentation pres = new Presentation("simpletable.pptx");
try {
// Laten we aannemen dat de eerste shape op de eerste dia een tabel is
ITable someTable = (ITable) pres.getSlides().get_Item(0).getShapes().get_Item(0);
// Stelt de fonthoogte van de tabelcellen in
PortionFormat portionFormat = new PortionFormat();
portionFormat.setFontHeight(25);
someTable.setTextFormat(portionFormat);
// Stelt de uitlijning en de rechter marge van de tabelcellen in één oproep in
ParagraphFormat paragraphFormat = new ParagraphFormat();
paragraphFormat.setAlignment(TextAlignment.Right);
paragraphFormat.setMarginRight(20);
someTable.setTextFormat(paragraphFormat);
// Stelt het verticale type van de tekst in de tabelcellen in
TextFrameFormat textFrameFormat = new TextFrameFormat();
textFrameFormat.setTextVerticalType(TextVerticalType.Vertical);
someTable.setTextFormat(textFrameFormat);
pres.save("result.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tabelstijl‑eigenschappen ophalen
Aspose.Slides stelt u in staat om de stijl‑eigenschappen van een tabel op te halen zodat u die details kunt gebruiken voor een andere tabel of elders. Deze Java‑code laat zien hoe u de stijl‑eigenschappen van een tabel‑preset‑stijl ophaalt:
import com.aspose.slides.*;
Presentation pres = new Presentation();
try {
ITable table = pres.getSlides().get_Item(0).getShapes().addTable(10, 10, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
table.setStylePreset(TableStylePreset.DarkStyle1); // wijzigt het standaard stijl‑preset thema
// Haalt het stijl‑preset van de tabel op
int stylePreset = table.getStylePreset();
System.out.println("Table style preset: " + stylePreset);
// Past het opgehaalde stijl‑preset toe op een andere tabel
ITable anotherTable = pres.getSlides().get_Item(0).getShapes().addTable(10, 100, new double[] { 100, 150 }, new double[] { 5, 5, 5 });
anotherTable.setStylePreset(stylePreset);
pres.save("table.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Aspectratio van een tabel vergrendelen
De aspectratio van een geometrische shape is de verhouding van de afmetingen in verschillende dimensies. Aspose.Slides biedt de eigenschap setAspectRatioLocked om de aspectratio‑instelling voor tabellen en andere shapes te vergrendelen.
Deze Java‑code laat zien hoe u de aspectratio voor een tabel vergrendelt:
import com.aspose.slides.*;
Presentation pres = new Presentation("pres.pptx");
try {
ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0);
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
table.getGraphicalObjectLock().setAspectRatioLocked(!table.getGraphicalObjectLock().getAspectRatioLocked()); // omkeren
System.out.println("Lock aspect ratio set: " + table.getGraphicalObjectLock().getAspectRatioLocked());
pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Kan ik de leesrichting van rechts‑naar‑links (RTL) inschakelen voor een gehele tabel en de tekst in de cellen?
Ja. De tabel biedt een methode setRightToLeft, en alinea’s hebben ParagraphFormat.setRightToLeft. Het gebruik van beide zorgt voor de juiste RTL‑volgorde en weergave binnen de cellen.
Hoe kan ik voorkomen dat gebruikers een tabel verplaatsen of de grootte wijzigen in het uiteindelijke bestand?
Gebruik shape locks om verplaatsen, formaat wijzigen, selectie, 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 instellen voor een cel; de afbeelding bedekt het celgebied volgens de gekozen modus (uitrekken of tegel).