Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cantorum

[Resolvido] Salvar arquivo em xls

Recommended Posts

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,

 

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.