Gestionar filas y columnas en tablas de PowerPoint con PHP
Para permitirle gestionar las filas y columnas de una tabla en una presentación de PowerPoint, Aspose.Slides ofrece la clase Table y muchos otros tipos.
Establecer la primera fila como encabezado
- Cree una instancia de la clase Presentation y cargue la presentación.
- Obtenga la referencia de una diapositiva a través de su índice.
- Cree un objeto Table y establézcalo a null.
- Itere a través de todos los objetos Shape para encontrar la tabla correspondiente.
- Establezca la primera fila de la tabla como su encabezado.
Este código PHP muestra cómo establecer la primera fila de una tabla como su encabezado:
# Instancia la clase Presentation
$pres = new Presentation("table.pptx");
try {
# Accede a la primera diapositiva
$sld = $pres->getSlides()->get_Item(0);
# Inicializa el TableEx nulo
$tbl = null;
# Recorre las formas y establece una referencia a la tabla
foreach($sld->getShapes() as $shp) {
if (java_instanceof($shp, new JavaClass("com.aspose.slides.Table"))) {
$tbl = $shp;
# Establece la primera fila de una tabla como su encabezado
$tbl->setFirstRow(true);
}
}
# Guarda la presentación en disco
$pres->save("pres.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Clonar una fila o columna de tabla
- Cree una instancia de la clase Presentation y cargue la presentación,
- Obtenga la referencia de una diapositiva a través de su índice.
- Defina una matriz de
columnWidth. - Defina una matriz de
rowHeight. - Añada un objeto Table a la diapositiva mediante el método addTable.
- Clone la fila de la tabla.
- Clone la columna de la tabla.
- Guarde la presentación modificada.
Este código PHP muestra cómo clonar la fila o la columna de una tabla de PowerPoint:
# Instancia la clase Presentation
$pres = new Presentation("Test.pptx");
try {
# Accede a la primera diapositiva
$sld = $pres->getSlides()->get_Item(0);
# Define columnas con anchuras y filas con alturas
$dblCols = array(50, 50, 50 );
$dblRows = array(50, 30, 30, 30, 30 );
# Añade una forma de tabla a la diapositiva
$table = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# Añade texto a la fila 1 celda 1
$table->get_Item(0, 0)->getTextFrame()->setText("Row 1 Cell 1");
# Añade texto a la fila 1 celda 2
$table->get_Item(1, 0)->getTextFrame()->setText("Row 1 Cell 2");
# Clona la fila 1 al final de la tabla
$table->getRows()->addClone($table->getRows()->get_Item(0), false);
# Añade texto a la fila 2 celda 1
$table->get_Item(0, 1)->getTextFrame()->setText("Row 2 Cell 1");
# Añade texto a la fila 2 celda 2
$table->get_Item(1, 1)->getTextFrame()->setText("Row 2 Cell 2");
# Clona la fila 2 como cuarta fila de la tabla
$table->getRows()->insertClone(3, $table->getRows()->get_Item(1), false);
# Clona la primera columna al final
$table->getColumns()->addClone($table->getColumns()->get_Item(0), false);
# Clona la segunda columna en el índice de la cuarta columna
$table->getColumns()->insertClone(3, $table->getColumns()->get_Item(1), false);
# Guarda la presentación en disco
$pres->save("table_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Eliminar una fila o columna de una tabla
- Cree una instancia de la clase Presentation y cargue la presentación,
- Obtenga la referencia de una diapositiva a través de su índice.
- Defina una matriz de
columnWidth. - Defina una matriz de
rowHeight. - Añada un objeto Table a la diapositiva mediante el método addTable.
- Elimine la fila de la tabla.
- Elimine la columna de la tabla.
- Guarde la presentación modificada.
Este código PHP muestra cómo eliminar una fila o columna de una tabla:
$pres = new Presentation();
try {
$slide = $pres->getSlides()->get_Item(0);
$colWidth = array(100, 50, 30 );
$rowHeight = array(30, 50, 30 );
$table = $slide->getShapes()->addTable(100, 100, $colWidth, $rowHeight);
$table->getRows()->removeAt(1, false);
$table->getColumns()->removeAt(1, false);
$pres->save("TestTable_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Aplicar formato de texto a nivel de fila de tabla
- Cree una instancia de la clase Presentation y cargue la presentación,
- Obtenga la referencia de una diapositiva a través de su índice.
- Acceda al objeto Table pertinente desde la diapositiva.
- Establezca la setFontHeight(float value) de las celdas de la primera fila.
- Establezca la setAlignment(int value) y la setMarginRight(float value) de las celdas de la primera fila.
- Establezca la setTextVerticalType(byte value) de las celdas de la segunda fila.
- Guarde la presentación modificada.
Este código PHP demuestra la operación:
# Crea una instancia de la clase Presentation
$pres = new Presentation();
try {
# Supongamos que la primera forma en la primera diapositiva es una tabla
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Establece la altura de fuente de las celdas de la primera fila
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->getRows()->get_Item(0)->setTextFormat($portionFormat);
# Establece la alineación del texto y el margen derecho de las celdas de la primera fila
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->getRows()->get_Item(0)->setTextFormat($paragraphFormat);
# Establece el tipo de orientación vertical del texto de las celdas de la segunda fila
$textFrameFormat = new TextFrameFormat();
$textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
$someTable->getRows()->get_Item(1)->setTextFormat($textFrameFormat);
# Guarda la presentación en disco
$pres->save("result.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Aplicar formato de texto a nivel de columna de tabla
- Cree una instancia de la clase Presentation y cargue la presentación,
- Obtenga la referencia de una diapositiva a través de su índice.
- Acceda al objeto Table pertinente desde la diapositiva.
- Establezca la setFontHeight(float value) de las celdas de la primera columna.
- Establezca la setAlignment(int value) y la setMarginRight(float value) de las celdas de la primera columna.
- Establezca la setTextVerticalType(byte value) de las celdas de la segunda columna.
- Guarde la presentación modificada.
Este código PHP demuestra la operación:
# Crea una instancia de la clase Presentation
$pres = new Presentation();
try {
# Supongamos que la primera forma en la primera diapositiva es una tabla
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Establece la altura de fuente de las celdas de la primera columna
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->getColumns()->get_Item(0)->setTextFormat($portionFormat);
# Establece la alineación del texto y el margen derecho de las celdas de la primera columna en una sola llamada
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->getColumns()->get_Item(0)->setTextFormat($paragraphFormat);
# Establece el tipo de orientación vertical del texto de las celdas de la segunda columna
$textFrameFormat = new TextFrameFormat();
$textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
$someTable->getColumns()->get_Item(1)->setTextFormat($textFrameFormat);
$pres->save("result.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Obtener propiedades de estilo de tabla
Aspose.Slides le permite recuperar las propiedades de estilo de una tabla para que pueda reutilizarlas en otra tabla o en otro lugar. Este código PHP muestra cómo obtener las propiedades de estilo de un estilo predefinido de tabla:
$pres = new Presentation();
try {
$table = $pres->getSlides()->get_Item(0)->getShapes()->addTable(10, 10, array(100, 150 ), array(5, 5, 5 ));
$table->setStylePreset(TableStylePreset->DarkStyle1);// cambiar el tema predeterminado del estilo preestablecido
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
¿Puedo aplicar temas/estilos de PowerPoint a una tabla ya creada?
Sí. La tabla hereda el tema de la diapositiva/disposición/maestra, y aún puede sobrescribir rellenos, bordes y colores de texto sobre ese tema.
¿Puedo ordenar filas de tabla como en Excel?
No, las tablas de Aspose.Slides no disponen de ordenación o filtros integrados. Ordene sus datos en memoria primero y luego vuelva a cargar las filas de la tabla en ese orden.
¿Puedo tener columnas con bandas (rayas) manteniendo colores personalizados en celdas específicas?
Sí. Active las columnas con bandas y luego sobrescriba celdas específicas con formato local; el formato a nivel de celda tiene prioridad sobre el estilo de tabla.