Gérer les cellules
Identifier une cellule de tableau fusionnée
- Créez une instance de la classe Presentation.
- Obtenez le tableau de la première diapositive.
- Itérez à travers les lignes et les colonnes du tableau pour trouver les cellules fusionnées.
- Imprimez un message lorsque des cellules fusionnées sont trouvées.
Ce code C# montre comment identifier les cellules de tableau fusionnées dans une présentation :
using (Presentation pres = new Presentation("SomePresentationWithTable.pptx"))
{
ITable table = pres.Slides[0].Shapes[0] as ITable; // en supposant que Diapositive#0.Forme#0 est un tableau
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("Cellule {0};{1} fait partie d'une cellule fusionnée avec RowSpan={2} et ColSpan={3} commençant à partir de la Cellule {4};{5}.",
i, j, currentCell.RowSpan, currentCell.ColSpan, currentCell.FirstRowIndex, currentCell.FirstColumnIndex));
}
}
}
}
Supprimer la bordure des cellules du tableau
- Créez une instance de la classe
Presentation
. - Obtenez la référence d’une diapositive par son index.
- Définissez un tableau de colonnes avec des largeurs.
- Définissez un tableau de lignes avec des hauteurs.
- Ajoutez un tableau à la diapositive via la méthode
AddTable
. - Itérez à travers chaque cellule pour supprimer les bordures supérieure, inférieure, droite et gauche.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code C# montre comment supprimer les bordures des cellules de tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
using (Presentation pres = new Presentation())
{
// Accède à la première diapositive
Slide sld = (Slide)pres.Slides[0];
// Définit les colonnes avec largeurs et les lignes avec hauteurs
double[] dblCols = { 50, 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// Ajoute une forme de tableau à la diapositive
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
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;
}
// Écrit le fichier PPTX sur le disque
pres.Save("table_out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Numérotation dans les cellules fusionnées
Si nous fusionnons 2 paires de cellules (1, 1) x (2, 1) et (1, 2) x (2, 2), le tableau résultant sera numéroté. Ce code C# démontre le processus :
// Instancie la classe Presentation qui représente un fichier PPTX
using (Presentation presentation = new Presentation())
{
// Accède à la première diapositive
ISlide sld = presentation.Slides[0];
// Définit les colonnes avec largeurs et les lignes avec hauteurs
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Ajoute une forme de tableau à la diapositive
ITable tbl = sld.Shapes.AddTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
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;
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.MergeCells(tbl[1, 1], tbl[2, 1], false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.MergeCells(tbl[1, 2], tbl[2, 2], false);
presentation.Save("MergeCells_out.pptx", SaveFormat.Pptx);
}
Nous fusionnons ensuite les cellules davantage en fusionnant (1, 1) et (1, 2). Le résultat est un tableau contenant une grande cellule fusionnée au centre :
// Instancie la classe Presentation qui représente un fichier PPTX
using (Presentation presentation = new Presentation())
{
// Accède à la première diapositive
ISlide slide = presentation.Slides[0];
// Définit les colonnes avec largeurs et les lignes avec hauteurs
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Ajoute une forme de tableau à la diapositive
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
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;
}
}
// Fusionne les cellules (1, 1) x (2, 1)
table.MergeCells(table[1, 1], table[2, 1], false);
// Fusionne les cellules (1, 2) x (2, 2)
table.MergeCells(table[1, 2], table[2, 2], false);
// Fusionne les cellules (1, 2) x (2, 2)
table.MergeCells(table[1, 1], table[1, 2], true);
// Écrit le fichier PPTX sur le disque
presentation.Save("MergeCells1_out.pptx", SaveFormat.Pptx);
}
Numérotation dans une cellule séparée
Dans les exemples précédents, lorsque les cellules du tableau ont été fusionnées, la numérotation ou le système de numérotation dans d’autres cellules n’a pas changé.
Cette fois, nous prenons un tableau normal (un tableau sans cellules fusionnées) et essayons ensuite de séparer la cellule (1,1) pour obtenir un tableau spécial. Vous voudrez peut-être faire attention à la numérotation de ce tableau, qui peut sembler étrange. Cependant, c’est ainsi que Microsoft PowerPoint numérote les cellules de tableau et Aspose.Slides fait la même chose.
Ce code C# démontre le processus que nous avons décrit :
// Instancie la classe Presentation qui représente un fichier PPTX
using (Presentation presentation = new Presentation())
{
// Accède à la première diapositive
ISlide slide = presentation.Slides[0];
// Définit les colonnes avec largeurs et les lignes avec hauteurs
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Ajoute une forme de tableau à la diapositive
ITable table = slide.Shapes.AddTable(100, 50, dblCols, dblRows);
// Définit le format de bordure pour chaque cellule
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;
}
}
// Fusionne les cellules (1, 1) x (2, 1)
table.MergeCells(table[1, 1], table[2, 1], false);
// Fusionne les cellules (1, 2) x (2, 2)
table.MergeCells(table[1, 2], table[2, 2], false);
// Sépare la cellule (1, 1).
table[1, 1].SplitByWidth(table[2, 1].Width / 2);
// Écrit le fichier PPTX sur le disque
presentation.Save("CellSplit_out.pptx", SaveFormat.Pptx);
}
Changer la couleur d’arrière-plan d’une cellule de tableau
Ce code C# vous montre comment changer la couleur d’arrière-plan d’une cellule de tableau :
using (Presentation presentation = new Presentation())
{
ISlide slide = presentation.Slides[0];
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 50, 50, 50, 50, 50 };
// crée un nouveau tableau
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// définit la couleur d'arrière-plan pour une cellule
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);
}
Ajouter une image dans une cellule de tableau
- Créez une instance de la classe
Presentation
. - Obtenez la référence d’une diapositive par son index.
- Définissez un tableau de colonnes avec des largeurs.
- Définissez un tableau de lignes avec des hauteurs.
- Ajoutez un tableau à la diapositive via la méthode
AddTable
. - Créez un objet
Bitmap
pour contenir le fichier image. - Ajoutez l’image bitmap à l’objet
IPPImage
. - Définissez le
FillFormat
pour la cellule de tableau surImage
. - Ajoutez l’image à la première cellule du tableau.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code C# montre comment placer une image dans une cellule de tableau lors de la création d’un tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
using (Presentation presentation = new Presentation())
{
// Accède à la première diapositive
ISlide slide = presentation.Slides[0];
// Définit les colonnes avec largeurs et les lignes avec hauteurs
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 100, 100, 100, 100, 90 };
// Ajoute une forme de tableau à la diapositive
ITable table = slide.Shapes.AddTable(50, 50, dblCols, dblRows);
// Charge une image à partir d'un fichier et l'ajoute aux ressources de la présentation
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = presentation.Images.AddImage(image);
image.Dispose();
// Ajoute l'image à la première cellule du tableau
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;
// Enregistre le fichier PPTX sur le disque
presentation.Save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
}