Beheer tabelcellen in presentaties in .NET
Overzicht
Aspose.Slides stelt u in staat tabelcellen in PowerPoint‑presentaties te benaderen en te wijzigen. Dit artikel legt uit hoe u samengevoegde tabelcellen kunt identificeren, celranden kunt verwijderen, met celnummering om kunt gaan na het samenvoegen of splitsen van cellen, de achtergrondkleur van een cel kunt wijzigen en een afbeelding in een tabelcel kunt toevoegen. De voorbeelden laten zien hoe u een presentatie maakt of opent, een tabel van een dia haalt, celopmaak bijwerkt via cel‑eigenschappen en de gewijzigde presentatie opslaat als een PPTX‑bestand.
Een samengevoegde tabelcel identificeren
- Maak een instantie van de Presentation klasse.
- Haal de tabel op van de eerste dia.
- Loop door de rijen en kolommen van de tabel om samengevoegde cellen te vinden.
- Print een bericht wanneer er samengevoegde cellen worden gevonden.
Deze C#‑code laat zien hoe u samengevoegde tabelcellen in een presentatie kunt identificeren:
using (Presentation pres = new Presentation("SomePresentationWithTable.pptx"))
{
ITable table = pres.Slides[0].Shapes[0] as ITable; // veronderstel dat Slide#0.Shape#0 een tabel is
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Columns.Count; j++)
{
ICell currentCell = table.Rows[i][j];
if (currentCell.IsMergedCell)
{
Console.WriteLine(string.Format("Cell {0};{1} is a part of merged cell with RowSpan={2} and ColSpan={3} starting from Cell {4};{5}.",
i, j, currentCell.RowSpan, currentCell.ColSpan, currentCell.FirstRowIndex, currentCell.FirstColumnIndex));
}
}
}
}
Tabelcelranden verwijderen
- Maak een instantie van de
Presentation‑klasse. - Haal een referentie naar een dia op via het indexnummer.
- Definieer een array met kolommen en hun breedte.
- Definieer een array met rijen en hun hoogte.
- Voeg een tabel toe aan de dia met de
AddTable‑methode. - Loop door elke cel en maak de boven‑, onder‑, rechter‑ en linker‑rand leeg.
- Sla de gewijzigde presentatie op als een PPTX‑bestand.
Deze C#‑code laat zien hoe u de randen van tabelcellen verwijdert:
// Instantieert de Presentation-klasse die een PPTX‑bestand vertegenwoordigt
using (Presentation pres = new Presentation())
{
// Toegang tot de eerste dia
Slide sld = (Slide)pres.Slides[0];
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 50, 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// Voegt de tabelvorm toe aan de dia
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
foreach (IRow row in tbl.Rows)
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.NoFill;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.NoFill;
}
// Schrijft het PPTX‑bestand naar schijf
pres.Save("table_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Nummering in samengevoegde cellen
Als we 2 paren cellen samenvoegen (1, 1) × (2, 1) en (1, 2) × (2, 2), wordt de resulterende tabel genummerd. Deze C#‑code demonstreert het proces:
// Instantieert de Presentation‑klasse die een PPTX‑bestand vertegenwoordigt
using (Presentation presentation = new Presentation())
{
// Toegang tot de eerste dia
ISlide sld = presentation.Slides[0];
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Voegt een tabelvorm toe aan de dia
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
foreach (IRow row in tbl.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// Voegt cellen (1, 1) x (2, 1) samen
tbl.MergeCells(tbl[1, 1], tbl[2, 1], false);
// Voegt cellen (1, 2) x (2, 2) samen
tbl.MergeCells(tbl[1, 2], tbl[2, 2], false);
presentation.Save("MergeCells_out.pptx", SaveFormat.Pptx);
}
Vervolgens voegen we de cellen verder samen door (1, 1) en (1, 2) te combineren. Het resultaat is een tabel met een grote samengevoegde cel in het midden:
// Instantieert de Presentation‑klasse die een PPTX‑bestand vertegenwoordigt
using (Presentation presentation = new Presentation())
{
// Toegang tot de eerste dia
ISlide slide = presentation.Slides[0];
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Voegt een tabelvorm toe aan de dia
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
foreach (IRow row in table.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// Voegt cellen (1, 1) x (2, 1) samen
table.MergeCells(table[1, 1], table[2, 1], false);
// Voegt cellen (1, 2) x (2, 2) samen
table.MergeCells(table[1, 2], table[2, 2], false);
// Voegt cellen (1, 2) x (2, 2) samen
table.MergeCells(table[1, 1], table[1, 2], true);
// Schrijft het PPTX‑bestand naar schijf
presentation.Save("MergeCells1_out.pptx", SaveFormat.Pptx);
}
Nummering in een opgesplitste cel
In eerdere voorbeelden veranderde de nummering in andere cellen niet toen tabelcellen werden samengevoegd.
Deze keer nemen we een normale tabel (een tabel zonder samengevoegde cellen) en splitsen we cel (1, 1) om een speciale tabel te krijgen. Let op de nummering van deze tabel; die kan vreemd lijken. Dat is echter de manier waarop Microsoft PowerPoint tabelcellen nummert en Aspose.Slides doet hetzelfde.
Deze C#‑code demonstreert het beschreven proces:
// Instantieert de Presentation‑klasse die een PPTX‑bestand vertegenwoordigt
using (Presentation presentation = new Presentation())
{
// Toegang tot de eerste dia
ISlide slide = presentation.Slides[0];
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Voegt een tabelvorm toe aan de dia
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// Stelt het randformaat in voor elke cel
foreach (IRow row in table.Rows)
{
foreach (ICell cell in row)
{
cell.CellFormat.BorderTop.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderTop.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderTop.Width = 5;
cell.CellFormat.BorderBottom.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderBottom.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderBottom.Width = 5;
cell.CellFormat.BorderLeft.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderLeft.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderLeft.Width = 5;
cell.CellFormat.BorderRight.FillFormat.FillType = FillType.Solid;
cell.CellFormat.BorderRight.FillFormat.SolidFillColor.Color = Color.Red;
cell.CellFormat.BorderRight.Width = 5;
}
}
// Voegt cellen (1, 1) x (2, 1) samen
table.MergeCells(table[1, 1], table[2, 1], false);
// Voegt cellen (1, 2) x (2, 2) samen
table.MergeCells(table[1, 2], table[2, 2], false);
// Splits cel (1, 1).
table[1, 1].SplitByWidth(table[2, 1].Width / 2);
// Schrijft het PPTX‑bestand naar schijf
presentation.Save("CellSplit_out.pptx", SaveFormat.Pptx);
}
Achtergrondkleur van de tabelcel wijzigen
Deze C#‑code laat zien hoe u de achtergrondkleur van een tabelcel wijzigt:
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 50, 50, 50, 50, 50 };
// maak een nieuwe tabel
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// stel de achtergrondkleur voor een cel in
ICell cell = table[2, 3];
cell.CellFormat.FillFormat.FillType = FillType.Solid;
cell.CellFormat.FillFormat.SolidFillColor.Color = Color.Red;
presentation.Save("cell_background_color.pptx", SaveFormat.Pptx);
}
Afbeelding toevoegen in een tabelcel
- Maak een instantie van de
Presentation‑klasse. - Haal een referentie naar een dia op via het indexnummer.
- Definieer een array met kolommen en hun breedte.
- Definieer een array met rijen en hun hoogte.
- Voeg een tabel toe aan de dia met de
AddTable‑methode. - Maak een
Bitmap‑object aan om het afbeeldingsbestand op te slaan. - Voeg de bitmap‑afbeelding toe aan het
IPPImage‑object. - Stel het
FillFormatvan de tabelcel in opPicture. - Voeg de afbeelding toe aan de eerste cel van de tabel.
- Sla de gewijzigde presentatie op als een PPTX‑bestand.
Deze C#‑code laat zien hoe u een afbeelding in een tabelcel plaatst bij het maken van een tabel:
// Instantieert de Presentation‑klasse die een PPTX‑bestand vertegenwoordigt
using (Presentation presentation = new Presentation())
{
// Toegang tot de eerste dia
ISlide slide = presentation.Slides[0];
// Definieert kolommen met breedtes en rijen met hoogtes
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 100, 100, 100, 100, 90 };
// Voegt een tabelvorm toe aan de dia
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// Laadt een afbeelding van een bestand en voegt deze toe aan de presentatieresources
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = presentation.Images.AddImage(image);
image.Dispose();
// Voegt de afbeelding toe aan de eerste tabelcel
table[0, 0].CellFormat.FillFormat.FillType = FillType.Picture;
table[0, 0].CellFormat.FillFormat.PictureFillFormat.PictureFillMode = PictureFillMode.Stretch;
table[0, 0].CellFormat.FillFormat.PictureFillFormat.Picture.Image = ppImage;
// Slaat het PPTX‑bestand op naar schijf
presentation.Save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
}
FAQ
Kan ik verschillende lijndiktes en stijlen instellen voor verschillende zijden van één cel?
Ja. De boven/onder/linker/rechter randen hebben afzonderlijke eigenschappen, zodat de dikte en stijl van elke zijde kunnen verschillen. Dit volgt logisch uit de per‑zijde‑randbesturing voor een cel die in het artikel wordt getoond.
Wat gebeurt er met de afbeelding als ik de kolom‑/rijgrootte wijzig nadat ik een afbeelding als achtergrond van de cel heb ingesteld?
Het gedrag hangt af van de vulmodus (stretch/tile). Bij uitrekken past de afbeelding zich aan de nieuwe cel aan; bij tegelen worden de tegels opnieuw berekend. Het artikel beschrijft de weergavemodi van afbeeldingen in een cel.
Kan ik een hyperlink toewijzen aan alle inhoud van een cel?
Hyperlinks worden ingesteld op tekst‑ (deel‑)niveau binnen het tekstframe van de cel of op het niveau van de volledige tabel/vorm. In de praktijk kent u de link toe aan een deel of aan alle tekst in de cel.
Kan ik verschillende lettertypen binnen één cel gebruiken?
Ja. Het tekstframe van een cel ondersteunt porties (runs) met onafhankelijke opmaak — lettertypefamilie, stijl, grootte en kleur.