Você já precisou manipular os dados de um arquivo do Word (.doc) com PHP? É possível que não, mas se como eu, um dia precisou fazer isso, saiba que se você roda seu sistema em um servidor Windows, não vai ser complicado. Para isso o Microsoft disponibiliza uma biblioteca que pode ser ativada no PHP e vai fazer a ponte nessa tarefa.
Eu, particularmente, precisava abrir um, ou vários arquivos do Word e pegar os dados de uma tabela para interpretá-los e manipular de acordo com a necessidade do meu sistema. Minha utilização foi em um servidor local usando o Xampp. Assim fiz as configurações básicas necessárias e parti para o código.
Primeiro passo é ativar a biblioteca (caso ela não esteja ativada ainda) e isso é feito no arquivo de configuração do php.ini. No meu caso ele está dentro da pasta “C:\xampp\php”. Você deve procurar nas extensões, uma chamada “php_com_dotnet.dll’ e ativá-la. Se ela já estiver lá, mas com um “;” no início, é só remover esse caractere para “descomentar” a linha. Bom, por aqui tudo certo, agora vamos ao código no PHP.
A primeira coisa a fazer agora é instanciar o objeto COM. Passaremos “word.application” como parâmetro, porque o que vamos abrir são arquivos do Microsoft Word. E vamos usar um “die” para encerrar a execução da aplicação caso haja algum erro na tentativa de criar o objeto. Em seguida tentamos abrir o arquivo.
# Instanciamos o objeto COM
$word = New COM("word.application") or die ("Ocorreu um Erro!");
# Definimos a variável $filename e atribuímos a ela o nome do arquivo que vamos abrir.
$filename = "teste.docx";
# Agora usamos o método open para abrir o arquivo.
$word->Documents->Open(realpath($filename));
O próximo passo é usar o método Content, para extrair o conteúdo do arquivo e armazenar em uma variável.
$content = $word->ActiveDocument->Content;
Se a sua intenção é exibir o conteúdo na tela, o ideal é converter a quebra de linha do Word para o padrão do HTML (<br>). Agora para ver se funcionou, podemos imprimir o resultado na tela usando o comando “echo”.
$content = nl2br($content);
echo $content ;
Depois de realizar a impressão na tela podemos fechar o arquivo, usando os metodos Close e Quit e para evitar problemas com a memória vamos apagar por completo o objeto criado anteriormente.
$word->ActiveDocument->Close(false);
$word->Quit();
$word = NULL;
unset($word);
No meu caso, precisei manipular os dados da tadela do word e gerar um novo conteúdo usando array e json, mas aí tudo já dentro do PHP e foi bem tranquilo.
Deixe um comentário:
Deixe seu comentário. Só serão exibidos comentários ligados ao texto do post. Links serão removidos.