Em nosso último artigo, mostramos como criar arquivos de texto utilizando o PHPWord. No artigo de hoje vamos ler e modificar o conteúdo de arquivos de texto já existentes. Para isso, continuaremos utilizando os exemplos que foram construídos no artigo anterior.
Primeiramente vamos ler o arquivo second.docx, adicionar um novo setor e adicionar um texto nesse setor.
Salvando como reader.php
<?php
require_once 'vendor/autoload.php'; //autoload das classes
use PhpOffice\PhpWord\PhpWord; //usando a classe PhpWord
use PhpOffice\PhpWord\IOFactory; //usando a classe IOFactory
$phpWord = IOFactory::load('second.docx', 'Word2007'); //dando load ao documento previamente criado
$section = $phpWord->addSection(); //criando uma nova sessão
$section->addText('In elementis mé pra quem é amistosis quis leo. Diuretics paradis num copo é motivis de denguis. Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio.', array(name => 'Times New Roman', size => 26)); //inserindo um novo bloco de texto e definindo a fonte desse bloco como Times New Roman 26
$objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito
$objWriter->save('third.docx'); //salvando o documento no tipo escolhido
Depois basta executar o script para gerarmos o third.docx
php reader.php
Feito isso, podemos verificar que foi gerado uma nova página com o conteúdo que criamos.


Nesse caso o script criou uma nova sessão em uma nova página e incluiu o texto que inserimos. E neste caso, como faríamos para apenas continuar a escrever como se fosse um parágrafo após os textos anteriores?
O PHP Word possui um método getSections, onde ele retorna as sessões que já estão escritas e podemos continuar escrevendo na mesma sessão. Como neste caso nós tínhamos uma sessão, podemos setar a section[0] e continuar escrevendo por ali, readAndWriteInSameSection.
<?php
require_once 'vendor/autoload.php'; //autoload das classes
use PhpOffice\PhpWord\PhpWord; //usando a classe PhpWord
use PhpOffice\PhpWord\IOFactory; //usando a classe IOFactory
$phpWord = IOFactory::load('second.docx', 'Word2007'); //dando load ao documento previamente criado
$sections = $phpWord->getSections(); //retorna todas as sessões
$sections[0]->addText('In elementis mé pra quem é amistosis quis leo. Diuretics paradis num copo é motivis de denguis. Suco de cevadiss, é um leite divinis, qui tem lupuliz, matis, aguis e fermentis. Nullam volutpat risus nec leo commodo, ut interdum diam laoreet. Sed non consequat odio.', array(name => 'Times New Roman', size => 26)); //inserindo um novo bloco de texto e definindo a fonte desse bloco como Times New Roman 26
$objWriter = IOFactory::createWriter($phpWord, 'Word2007'); //definindo o tipo de documento a ser escrito
$objWriter->save('fourth.docx'); //salvando o documento no tipo escolhido
Depois vamos rodar:
php readAndWriteInSameSection.php
Nesse caso ele gerou um parágrafo logo após o último.

Você pode customizar, alterar outros dados, adicionar sessões, links, tabelas e muito mais utilizando o PHPWord.
Para aprender ainda mais sobre essa biblioteca, leia a documentação oficial e o repositório oficial no GitHub.
Espero que tenham gostado! Até a próxima pessoal.




