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 colonnes du tableau pour trouver des cellules fusionnées.
- Imprimez un message lorsque des cellules fusionnées sont trouvées.
Ce code Java vous montre comment identifier les cellules de tableau fusionnées dans une présentation :
Presentation pres = new Presentation("SomePresentationWithTable.pptx");
try {
ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0); // en supposant que Slide#0.Shape#0 est un tableau
for (int i = 0; i < table.getRows().size(); i++)
{
for (int j = 0; j < table.getColumns().size(); j++)
{
ICell currentCell = table.getRows().get_Item(i).get_Item(j);
if (currentCell.isMergedCell())
{
System.out.println(String.format("Cellule %d;%d fait partie d'une cellule fusionnée avec RowSpan=%d et ColSpan=%d commençant à partir de la cellule %d;%d.",
i, j, currentCell.getRowSpan(), currentCell.getColSpan(), currentCell.getFirstRowIndex(), currentCell.getFirstColumnIndex()));
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Supprimer la bordure des cellules de tableau
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive via son index.
- Définissez un tableau de colonnes avec largeur.
- Définissez un tableau de lignes avec hauteur.
- Ajoutez un tableau à la diapositive via la méthode addTable .
- Itérez à travers chaque cellule pour effacer les bordures supérieure, inférieure, droite et gauche.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code Java vous montre comment supprimer les bordures des cellules de tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Accède à la première diapositive
Slide sld = (Slide)pres.getSlides().get_Item(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.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure de chaque cellule
for (IRow row : tbl.getRows())
{
for (ICell cell : row)
{
cell.getCellFormat().getBorderTop().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderBottom().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderLeft().getFillFormat().setFillType(FillType.NoFill);
cell.getCellFormat().getBorderRight().getFillFormat().setFillType(FillType.NoFill);
}
}
// Écrit le PPTX sur le disque
pres.save("table_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Numérotation des 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 Java illustre le processus :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Accède à la première diapositive
ISlide sld = pres.getSlides().get_Item(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.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure de chaque cellule
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);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
pres.save("MergeCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Nous fusionnons ensuite les cellules plus loin 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
Presentation pres = new Presentation();
try {
// Accède à la première diapositive
ISlide sld = pres.getSlides().get_Item(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.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure de chaque cellule
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);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Fusionne les cellules (1, 1) x (1, 2)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
// Écrit le fichier PPTX sur le disque
pres.save("MergeCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Numérotation dans une cellule séparée
Dans les exemples précédents, lorsque des cellules de 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 régulier (un tableau sans cellules fusionnées) et nous essayons ensuite de séparer la cellule (1,1) pour obtenir un tableau spécial. Vous voudrez peut-être prêter 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 de même.
Ce code Java illustre le processus que nous avons décrit :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Accède à la première diapositive
ISlide sld = pres.getSlides().get_Item(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.getShapes().addTable(100, 50, dblCols, dblRows);
// Définit le format de bordure de chaque cellule
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);
}
}
// Fusionne les cellules (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Fusionne les cellules (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Sépare la cellule (1, 1)
tbl.get_Item(1, 1).splitByWidth(tbl.get_Item(2, 1).getWidth() / 2);
// Écrit le fichier PPTX sur le disque
pres.save("SplitCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Changer la couleur de fond de la cellule de tableau
Ce code Java vous montre comment changer la couleur de fond d’une cellule de tableau :
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
double[] dblCols = { 150, 150, 150, 150 };
double[] dblRows = { 50, 50, 50, 50, 50 };
// crée un nouveau tableau
ITable table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// définissez la couleur de fond pour une cellule
ICell cell = table.get_Item(2, 3);
cell.getCellFormat().getFillFormat().setFillType(FillType.Solid);
cell.getCellFormat().getFillFormat().getSolidFillColor().setColor(Color.RED);
presentation.save("cell_background_color.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Ajouter une image dans une cellule de tableau
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive via son index.
- Définissez un tableau de colonnes avec largeur.
- Définissez un tableau de lignes avec hauteur.
- Ajoutez un tableau à la diapositive via la méthode AddTable .
- Créez un objet
Images
pour contenir le fichier image. - Ajoutez l’image
IImage
à l’objetIPPImage
. - Définissez le
FillFormat
pour la cellule du tableau surPicture
. - Ajoutez l’image à la première cellule du tableau.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
Ce code Java vous montre comment placer une image à l’intérieur d’une cellule de tableau lors de la création d’un tableau :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Accède à la première diapositive
ISlide islide = pres.getSlides().get_Item(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 tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// Crée un objet IPPImage à l'aide du fichier image
IPPImage picture;
IImage image = Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Ajoute l'image à la première cellule du tableau
ICellFormat cellFormat = tbl.get_Item(0, 0).getCellFormat();
cellFormat.getFillFormat().setFillType(FillType.Picture);
cellFormat.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch);
cellFormat.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Enregistre le fichier PPTX sur le disque
pres.save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}