Cantorum 0 Denunciar post Postado Dezembro 17, 2009 Alguém sabe como usar esse script de modo a salvar o arquivo gerado em xls em um determinado diretório do servidor e não permitir que apareça a janela para downloads? <?php /* * Criando e exportando planilhas do Excel * http://thiagobelem.net/blog/ */ // Definimos o nome do arquivo que será exportado $arquivo = 'planilha.xls'; // Criamos uma tabela HTML com o formato da planilha $html = ''; $html.='<table>'; $html.='<tr class="cabecalho">'; $html.='<td colspan="4"><h1>Lista de Inscritos</h1></td>'; $html.='</tr>'; $html.='<tr class="legenda">'; $html.='<td colspan="4"><img src="file:///C|/Users/Paulinho/Desktop/Untitled-1.png" width="300" height="35" /></td>'; $html.='</tr>'; $html.='<tr class="dados">'; $html.='<td width="154">Nº dE InscriÇÃo</td>'; $html.='<td width="591">Nome do Inscrito(a)</td>'; $html.='<td width="592">Assinatura</td>'; $html.='<td width="80">Status</td>'; $html.='</tr>'; $html.='<tr>'; $html.='<td> </td>'; $html.='<td> </td>'; $html.='<td> </td>'; $html.='<td width="80"> </td>'; $html.='</tr>'; $html.='</table>'; // Configurações header para forçar o download header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); header ("Content-type: application/x-msexcel"); header ("Content-Disposition: attachment; filename=\"{$arquivo}\"" ); header ("Content-Description: PHP Generated Data" ); // Envia o conteúdo do arquivo echo $html; exit; ?> Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 18, 2009 Em um servidor Windows você pode usar a classe COM: http://www.php.net/manual/en/class.com.php Compartilhar este post Link para o post Compartilhar em outros sites
Cantorum 0 Denunciar post Postado Dezembro 18, 2009 João, Muito obrigado mas para que essa classe funcione é preciso ter instalado o Excel no servidor. Infelizmente não o tenho e estou evitando de ficar instalando muitos programas no mesmo. Mas se não tiver outro jeito... Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 18, 2009 Amigo, você percebe que no fragmento que você mostrou no primeiro POST você tem na verdade um HTML e tudo o que você faz é enviar esse HTML 'dizendo' que é um XLS ? Quando o content-type é definido para alguma coisa e enviado para download o comportamento padrão é que o programa associado àquele content-type assuma a responsabilidade por abri-lo. O Excel, quando assume essa responsabilidade lê o conteúdo, percebe que se trata na verdade de um HTML e monta a tabela segundo o esperado, mesmo não sendo um XLS de verdade. Se você não quer colocar o arquivo para download e quer apenas salvar o arquivo em uma pasta qualquer do seu servidor, basta pegar esse HTML gerado e gravar em um arquivo, por exemplo: $html = <<<HTML <table> <tr class="cabecalho"> <td colspan="4"><h1>Lista de Inscritos</h1></td> </tr> <tr class="legenda"> <td colspan="4"><img src="file:///C|/Users/Paulinho/Desktop/Untitled-1.png" width="300" height="35" /></td> </tr> <tr class="dados"> <td width="154">Nº dE InscriÇÃo</td> <td width="591">Nome do Inscrito(a)</td> <td width="592">Assinatura</td> <td width="80">Status</td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td width="80"> </td> </tr> </table> HTML; file_put_contents( 'umarquivo.xls' , $html ); Veja que o resultado é o mesmo, você gerou o HTML e salvou em um arquivo (em vez de enviar para download) quando você for abrir esse arquivo no Excel ele vai perceber que se trata de um HTML e fará o que tem que fazer. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Cantorum 0 Denunciar post Postado Dezembro 20, 2009 Amigo, Muito obrigado pela aula. Está claríssimo. Tenho ainda muito o que aprender... Apenas indiquei o caminho para o file como por exemplo: file_put_contents( 'c:/backup/umarquivo.xls' , $html ); Foi resolvido o problema. Compartilhar este post Link para o post Compartilhar em outros sites