Gestionar Celdas
Identificar Celda de Tabla Combinada
- Crea una instancia de la clase Presentation.
- Obtén la tabla de la primera diapositiva.
- Itera a través de las filas y columnas de la tabla para encontrar celdas combinadas.
- Imprime un mensaje cuando se encuentren celdas combinadas.
Este código Java te muestra cómo identificar celdas de tabla combinadas en una presentación:
Presentation pres = new Presentation("SomePresentationWithTable.pptx");
try {
ITable table = (ITable)pres.getSlides().get_Item(0).getShapes().get_Item(0); // asumiendo que Slide#0.Shape#0 es una tabla
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("La celda %d;%d es parte de una celda combinada con RowSpan=%d y ColSpan=%d comenzando desde la celda %d;%d.",
i, j, currentCell.getRowSpan(), currentCell.getColSpan(), currentCell.getFirstRowIndex(), currentCell.getFirstColumnIndex()));
}
}
}
} finally {
if (pres != null) pres.dispose();
}
Eliminar el Borde de las Celdas de la Tabla
- Crea una instancia de la clase Presentation.
- Obtén la referencia de una diapositiva a través de su índice.
- Define un arreglo de columnas con ancho.
- Define un arreglo de filas con altura.
- Agrega una tabla a la diapositiva a través del método addTable .
- Itera a través de cada celda para limpiar los bordes superior, inferior, derecho e izquierdo.
- Guarda la presentación modificada como un archivo PPTX.
Este código Java te muestra cómo eliminar los bordes de las celdas de la tabla:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Accede a la primera diapositiva
Slide sld = (Slide)pres.getSlides().get_Item(0);
// Define columnas con anchos y filas con alturas
double[] dblCols = { 50, 50, 50, 50 };
double[] dblRows = { 50, 30, 30, 30, 30 };
// Agrega la forma de tabla a la diapositiva
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Establece el formato del borde para cada celda
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);
}
}
// Escribe el PPTX en el disco
pres.save("table_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Numeración en Celdas Combinadas
Si combinamos 2 pares de celdas (1, 1) x (2, 1) y (1, 2) x (2, 2), la tabla resultante será numerada. Este código Java demuestra el proceso:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Accede a la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Define columnas con anchos y filas con alturas
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Agrega una forma de tabla a la diapositiva
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Establece el formato del borde para cada celda
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);
}
}
// Combina celdas (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Combina celdas (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();
}
Luego, combinamos más las celdas combinando (1, 1) y (1, 2). El resultado es una tabla que contiene una gran celda combinada en su centro:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Accede a la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Define columnas con anchos y filas con alturas
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Agrega una forma de tabla a la diapositiva
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Establece el formato del borde para cada celda
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);
}
}
// Combina celdas (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Combina celdas (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Combina celdas (1, 1) x (1, 2)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(1, 2), true);
//Escribe el archivo PPTX en el disco
pres.save("MergeCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Numeración en Celda Dividida
En ejemplos anteriores, cuando las celdas de la tabla se combinaron, la numeración o sistema de números en otras celdas no cambió.
Esta vez, tomamos una tabla regular (una tabla sin celdas combinadas) y luego intentamos dividir la celda (1,1) para obtener una tabla especial. Es posible que desees prestar atención a la numeración de esta tabla, que podría considerarse extraña. Sin embargo, así es como Microsoft PowerPoint numera las celdas de la tabla y Aspose.Slides hace lo mismo.
Este código Java demuestra el proceso que describimos:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Accede a la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Define columnas con anchos y filas con alturas
double[] dblCols = { 70, 70, 70, 70 };
double[] dblRows = { 70, 70, 70, 70 };
// Agrega una forma de tabla a la diapositiva
ITable tbl = sld.getShapes().addTable(100, 50, dblCols, dblRows);
// Establece el formato del borde para cada celda
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);
}
}
// Combina celdas (1, 1) x (2, 1)
tbl.mergeCells(tbl.get_Item(1, 1), tbl.get_Item(2, 1), false);
// Combina celdas (1, 2) x (2, 2)
tbl.mergeCells(tbl.get_Item(1, 2), tbl.get_Item(2, 2), false);
// Divide la celda (1, 1)
tbl.get_Item(1, 1).splitByWidth(tbl.get_Item(2, 1).getWidth() / 2);
//Escribe el archivo PPTX en el disco
pres.save("SplitCells_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Cambiar el Color de Fondo de la Celda de la Tabla
Este código Java te muestra cómo cambiar el color de fondo de una celda de la tabla:
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 };
// crea una nueva tabla
ITable table = slide.getShapes().addTable(50, 50, dblCols, dblRows);
// establece el color de fondo para una celda
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();
}
Agregar Imagen Dentro de la Celda de la Tabla
- Crea una instancia de la clase Presentation.
- Obtén la referencia de una diapositiva a través de su índice.
- Define un arreglo de columnas con ancho.
- Define un arreglo de filas con altura.
- Agrega una tabla a la diapositiva a través del método AddTable .
- Crea un objeto
Images
para contener el archivo de imagen. - Agrega la imagen
IImage
al objetoIPPImage
. - Establece el
FillFormat
para la celda de la tabla aPicture
. - Agrega la imagen a la primera celda de la tabla.
- Guarda la presentación modificada como un archivo PPTX.
Este código Java te muestra cómo colocar una imagen dentro de una celda de la tabla al crear una tabla:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Accede a la primera diapositiva
ISlide islide = pres.getSlides().get_Item(0);
// Define columnas con anchos y filas con alturas
double[] dblCols = {150, 150, 150, 150};
double[] dblRows = {100, 100, 100, 100, 90};
// Agrega una forma de tabla a la diapositiva
ITable tbl = islide.getShapes().addTable(50, 50, dblCols, dblRows);
// Crea un objeto IPPImage usando el archivo de imagen
IPPImage picture;
IImage image = Images.fromFile("image.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Agrega la imagen a la primera celda de la tabla
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);
// Guarda el archivo PPTX en el disco
pres.save("Image_In_TableCell_out.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}