Back-End

16 mar, 2018

Lendo arquivos de texto com o PHPWord

Publicidade

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.