Gerenciar Linhas e Colunas em Tabelas do PowerPoint Usando PHP
Introdução
Para permitir que você gerencie as linhas e colunas de uma tabela em uma apresentação do PowerPoint, o Aspose.Slides fornece a classe Table e muitos outros tipos.
Definir a Primeira Linha como Cabeçalho
- Crie uma instância da classe Presentation e carregue a apresentação.
- Obtenha a referência de um slide por meio do seu índice.
- Crie um objeto Table e defina-o como null.
- Percorra todos os objetos Shape para encontrar a tabela relevante.
- Defina a primeira linha da tabela como seu cabeçalho.
Este código PHP mostra como definir a primeira linha de uma tabela como seu cabeçalho:
# Instancia a classe Presentation
$pres = new Presentation("table.pptx");
try {
# Acessa o primeiro slide
$sld = $pres->getSlides()->get_Item(0);
# Inicializa o TableEx nulo
$tbl = null;
# Percorre as formas e define uma referência para a tabela
foreach($sld->getShapes() as $shp) {
if (java_instanceof($shp, new JavaClass("com.aspose.slides.Table"))) {
$tbl = $shp;
# Define a primeira linha da tabela como cabeçalho
$tbl->setFirstRow(true);
}
}
# Salva a apresentação no disco
$pres->save("pres.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Clonar uma Linha ou Coluna da Tabela
- Crie uma instância da classe Presentation e carregue a apresentação,
- Obtenha a referência de um slide por meio do seu índice.
- Defina um array de
columnWidth. - Defina um array de
rowHeight. - Adicione um objeto Table ao slide usando o método addTable.
- Clone a linha da tabela.
- Clone a coluna da tabela.
- Salve a apresentação modificada.
Este código PHP mostra como clonar a linha ou a coluna de uma tabela do PowerPoint:
# Instancia a classe Presentation
$pres = new Presentation("Test.pptx");
try {
# Acessa o primeiro slide
$sld = $pres->getSlides()->get_Item(0);
# Define colunas com larguras e linhas com alturas
$dblCols = array(50, 50, 50 );
$dblRows = array(50, 30, 30, 30, 30 );
# Adiciona uma forma de tabela ao slide
$table = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
# Adiciona texto à célula linha 1 coluna 1
$table->get_Item(0, 0)->getTextFrame()->setText("Row 1 Cell 1");
# Adiciona texto à célula linha 1 coluna 2
$table->get_Item(1, 0)->getTextFrame()->setText("Row 1 Cell 2");
# Clona a Linha 1 no final da tabela
$table->getRows()->addClone($table->getRows()->get_Item(0), false);
# Adiciona texto à célula linha 2 coluna 1
$table->get_Item(0, 1)->getTextFrame()->setText("Row 2 Cell 1");
# Adiciona texto à célula linha 2 coluna 2
$table->get_Item(1, 1)->getTextFrame()->setText("Row 2 Cell 2");
# Clona a Linha 2 como a quarta linha da tabela
$table->getRows()->insertClone(3, $table->getRows()->get_Item(1), false);
# Clona a primeira coluna no final
$table->getColumns()->addClone($table->getColumns()->get_Item(0), false);
# Clona a segunda coluna no índice da quarta coluna
$table->getColumns()->insertClone(3, $table->getColumns()->get_Item(1), false);
# Salva a apresentação no disco
$pres->save("table_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Remover uma Linha ou Coluna de uma Tabela
- Crie uma instância da classe Presentation e carregue a apresentação,
- Obtenha a referência de um slide por meio do seu índice.
- Defina um array de
columnWidth. - Defina um array de
rowHeight. - Adicione um objeto Table ao slide usando o método addTable.
- Remova a linha da tabela.
- Remova a coluna da tabela.
- Salve a apresentação modificada.
Este código PHP mostra como remover uma linha ou coluna de uma tabela:
$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();
}
}
Definir Formatação de Texto no Nível de Linha da Tabela
- Crie uma instância da classe Presentation e carregue a apresentação,
- Obtenha a referência de um slide por meio do seu índice.
- Acesse o objeto Table relevante a partir do slide.
- Defina a altura da fonte das células da primeira linha com setFontHeight(float value).
- Defina o alinhamento das células da primeira linha com setAlignment(int value) e a margem direita com setMarginRight(float value).
- Defina o tipo de texto vertical das células da segunda linha com setTextVerticalType(byte value).
- Salve a apresentação modificada.
Este código PHP demonstra a operação.
# Cria uma instância da classe Presentation
$pres = new Presentation();
try {
# Vamos supor que a primeira forma no primeiro slide seja uma tabela
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Define a altura da fonte das células da primeira linha
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->getRows()->get_Item(0)->setTextFormat($portionFormat);
# Define o alinhamento de texto e a margem direita das células da primeira linha
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->getRows()->get_Item(0)->setTextFormat($paragraphFormat);
# Define o tipo de texto vertical das células da segunda linha
$textFrameFormat = new TextFrameFormat();
$textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
$someTable->getRows()->get_Item(1)->setTextFormat($textFrameFormat);
# Salva a apresentação no disco
$pres->save("result.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Definir Formatação de Texto no Nível de Coluna da Tabela
- Crie uma instância da classe Presentation e carregue a apresentação,
- Obtenha a referência de um slide por meio do seu índice.
- Acesse o objeto Table relevante a partir do slide.
- Defina a altura da fonte das células da primeira coluna com setFontHeight(float value).
- Defina o alinhamento das células da primeira coluna com setAlignment(int value) e a margem direita com setMarginRight(float value).
- Defina o tipo de texto vertical das células da segunda coluna com setTextVerticalType(byte value).
- Salve a apresentação modificada.
Este código PHP demonstra a operação:
# Cria uma instância da classe Presentation
$pres = new Presentation();
try {
# Vamos supor que a primeira forma no primeiro slide seja uma tabela
$someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
# Define a altura da fonte das células da primeira coluna
$portionFormat = new PortionFormat();
$portionFormat::setFontHeight(25);
$someTable->getColumns()->get_Item(0)->setTextFormat($portionFormat);
# Define o alinhamento de texto e a margem direita das células da primeira coluna em uma única chamada
$paragraphFormat = new ParagraphFormat();
$paragraphFormat::setAlignment(TextAlignment->Right);
$paragraphFormat::setMarginRight(20);
$someTable->getColumns()->get_Item(0)->setTextFormat($paragraphFormat);
# Define o tipo de texto vertical das células da segunda coluna
$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();
}
}
Obter Propriedades de Estilo da Tabela
O Aspose.Slides permite que você recupere as propriedades de estilo de uma tabela para que possa usar esses detalhes em outra tabela ou em outro local. Este código PHP mostra como obter as propriedades de estilo de um estilo predefinido de tabela:
$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);// altera o tema padrão do preset de estilo
$pres->save("table.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Posso aplicar temas/estilos do PowerPoint a uma tabela que já foi criada?
Sim. A tabela herda o tema do slide/layout/master e ainda é possível substituir preenchimentos, bordas e cores de texto sobre esse tema.
Posso ordenar linhas de tabela como no Excel?
Não, as tabelas do Aspose.Slides não possuem classificação ou filtros integrados. Ordene os dados na memória primeiro e, em seguida, preencha as linhas da tabela nessa ordem.
Posso ter colunas listradas (banda) mantendo cores personalizadas em células específicas?
Sim. Ative colunas listradas e, depois, substitua células específicas com formatação local; a formatação ao nível da célula tem precedência sobre o estilo da tabela.