Exportar para word com PHP
by Rodrigo Régis Palmeira on jul.09, 2009, under PHP
Olá
No meu último post eu expliquei como exportar dados formatados em html para o excel.
Hoje vou explicar como exportar para word.
Na verdade, só vamos mudar a extensão do arquivo a ser exportado e o parâmetro application do header.
Vamos forçar o download do arquivo através da função header() que é nativa do PHP.
Coloquei a function como método estático (igual ao método toXLS) dentro de uma classe (Util.php) para que a coleção de funções de uso geral fiquem mais organizadas e acessíveis.
Segue o método (Util.php):
<?php
class Util
{
/**
* @author Rodrigo Régis Palmeira
* @link http://www.rodrigoregis.com.br
* @param string $html
* @return file.doc
*/
public static function toDOC($html, $nome = 'file.doc', $destino = null)
{
if (!$destino)
{
header("Content-type: application/vnd.ms-word");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=\"{$nome}\"");
header("Pragma: no-cache");
echo $html;
exit();
}
else
{
file_put_contents($destino.'/'.$nome, $html);
exit();
}
}
}
?>
Vamos implementá-lo (relatorio.php):
<?php
require('Util.php');
$html = <<<HTML
<table width='90%' border='1'>
<tr>
<th>Título </th>
<th>Título 2</th>
<th>Título 3</th>
</tr>
<tr>
<td>Dados 1</td>
<td>Dados 2</td>
<td>Dados 3</td>
</tr>
<tr>
<td>Dados 4</td>
<td>Dados 5</td>
<td>Dados 6</td>
</tr>
<tr>
<td>Dados 7</td>
<td>Dados 8</td>
<td>Dados 9</td>
</tr>
</table>
HTML;
//Chamando o método
Util::toDOC($html);
?>
Por hoje é só!
Espero ter ajudado!

maio 24th, 2010 on 08:02
Olá!
Você pode salvar o arquivo em disco sim!
Segue uma atualização da classe:
public static function toDOC($html, $nome = 'file.doc', $destino = null) { if (!$destino) { header("Content-type: application/vnd.ms-word"); header("Content-type: application/force-download"); header("Content-Disposition: attachment; filename=\"{$nome}\""); header("Pragma: no-cache"); echo $html; } else { file_put_contents($destino.'/'.$nome, $html); } }maio 24th, 2010 on 07:58
Provavelmente existe sim!
Só é preciso pesquisar um pouco mais sobre header!
Uma outra opção seria você salvar o arquivo em disco e abrí-lo após isso!
maio 22nd, 2010 on 20:36
Parabens pelo post e o codigo funcionou certinho.
Eu tava precisando desse sistema msm soque ao invés dele salvar no meu pc tava querendo q ele fosse salvo no servidor de hospedagem ou ser enviado como anexo pela função mail().
Vc saberia como fazer um dos dois ?
Abraço
abril 14th, 2010 on 10:37
Ola Rodrigo, excelente esta função, estou desenvolvendo uma proposta técnica que é montada no php, depois exportada para o word, acredito que vai dar certo, mas a duvida é a seguinte:
Gostaria que quando clicar fosse direto para o word sem ter que aparecer aquele pop perguntando abrir ou download, se existe essa possibilidade , como faço ?
Obrigado desde já.
março 2nd, 2010 on 23:51
Rodrigo, bacana d+, funciona perfeitamente.
Valeu!!!
janeiro 13th, 2010 on 20:18
Muito bom mesmo, estava procurando isso! Abraço!
dezembro 1st, 2009 on 19:42
Olá!
Nunca precisei de algo que não pudesse resolver com o HTML + CSS.
Já usei FPDF e me atendeu bem (apesar de eu preferir DOMPDF).
Vou dar uma pesquisada e se encontrar algo parecido com o que você precisa eu posto aqui ok?
dezembro 1st, 2009 on 17:40
Olá Régis. Antes de + nada, parabéns pelo post, ajudou muito. Agora tenho um novo problema: preciso exportar algo com mais recursos de formatação para Word. Precisei fazer algo parecido para PDF e o FPDF serviu. Saberia me dizer se existe algo parecido que exporte para Word? Grande abraço.
julho 27th, 2009 on 10:21
Cara parabéns. Uma mão na roda esse seu script. Não estava precisando agora, mas vou precisar no futuro. Valeu
julho 25th, 2009 on 22:46
Por nada! É sempre bom ajudar (e nunca se sabe quando vamos precisar tbm).
São dois aquivos diferentes.
O primeiro (o arquivo com a classe) eu costumo chamar de Util.php (tem jente que prefere Util.class.php) e é uma classe onde geralmente eu guardo meus métodos que podem ser utilizadas em qualquer parte do sistema.
O segundo arquivo você pode chamar da forma que quiser, porém, você não pode se esquecer de colocar um require(‘Util.php’) no topo do arquivo.
Vou adicionar essa parte do código no post p/ ficar mais claro.
julho 25th, 2009 on 22:45
Primeiramente, obrigado pela resposta.
Tenho dúvida na hora de gerar os arquivos. São dois arquivos diferentes? Ou junta?
Salvo com qual nome?
julho 25th, 2009 on 21:52
Me diga o que aconteceu!
Retornou algum erro?
Qual versão do word vc tem?
Qual sua versão do PHP e qual seu Sistema Operacional?
julho 25th, 2009 on 14:20
Não consegui utilizar.
O que deve ser feito? Salvar os arquivos com que nome?
Abraços e obrigado
julho 21st, 2009 on 14:51
Ótima solução.
simples e eficiente.
abraço
julho 10th, 2009 on 07:44
Ou, legal esse post heim régis, tava procurando algo parecido para aplicar no sistema de agenda.
Vou testar aqui… vlw.