Exportando dados para EXCELL com PHP

Um dia desses, me surgiu um problema ao elaborar um sistema. O Cliente queria que o sistema exportasse os dados de determinado relatório para Excell.

Em ASP, eu sabia fazer, porém, estava usando PHP… O que fazer?

Pesquisei na internet e entendi o funcionamento. Percebi que é bem simples.

1º O que é uma planilha?

É em principio uma tabela.

<table>
	<tr>
		<td>Linha 1, Coluna 1</td>
		<td>Linha 1, Coluna 2</td>
		<td>Linha 1, Coluna 2</td>
	</tr>
	<tr>
		<td>Linha 2, Coluna 1</td>
		<td>Linha 2, Coluna 2</td>
		<td>Linha 2, Coluna 2</td>
	</tr>
	<tr>
		<td>Linha 3, Coluna 1</td>
		<td>Linha 3, Coluna 2</td>
		<td>Linha 3, Coluna 2</td>
	</tr>
</table>

Ta, fiz a tabela, e agora… Como eu exporto…

Simples, você exporta através de de função header do PHP.

Muitos que estão lendo devem conhecer a função header apenas como uma maneira de redirecionar uma página, porém ela vai muito além disso…

Veja no nosso caso, como é:

header("Content-type: application/vnd.ms-excel");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=relatorio.xls");
header("Pragma: no-cache");

Utilizando a tabela gerada e as funções de Header no mesmo arquivo, será gerado um excell com a sua estrutura de tabela.

Veja o Código Completo

<?php
	header("Content-type: application/vnd.ms-excel");
	header("Content-type: application/force-download");
	header("Content-Disposition: attachment; filename=relatorio.xls");
	header("Pragma: no-cache");
?>

<table>
	<tr>
		<td><strong>Linha 1, Coluna 1</strong></td>
		<td>Linha 1, Coluna 2</td>
		<td>Linha 1, Coluna 2</td>
	</tr>
	<tr>
		<td>Linha 2, Coluna 1</td>
		<td>Linha 2, Coluna 2</td>
		<td>Linha 2, Coluna 2</td>
	</tr>
	<tr>
		<td>Linha 3, Coluna 1</td>
		<td>Linha 3, Coluna 2</td>
		<td>Linha 3, Coluna 2</td>
	</tr>
</table>

Utilizando este código, será gerado um arquivo chamado “relatorio.xls” com os dados da tabela.

gerarexcell

Se você analisar o código acima, você verá que eu formatei a primeira celula da primeira linha, deixando-a em negrito. Você pode formatar da maneira como você necessitar.

  1. Trabalhando com datas em PHP
  2. PHP: Trabalhando com horários – Fuso
  3. Javascript para principiantes ou esquecidinhos. Aula 4 – Funções
  4. Javascript para principiantes ou esquecidinhos. Aula 6 – Manipulando o DOM
  5. Flash validado pelo W3C



5 Comentários »

  1. Comentário por Gabriel Lau — 17/06/2009 @ 2:42 am

    Aew Leandro… me deparei com esse mesmo problema um tempo atrás… mas o meu ia mais além. Além de poder salvar o arquivo como Excel… eu teria que poder manipular esse documento online (parecido com o Google Docs)… e integrá-lo com o PHP para salvar as informações num banco de dados… porém, nao encontrei meios de fazer isso =/ … vou ter que fazer na gambiarra mesmo com os velhos formulários… xD

    E… em relação a essa formatação: se eu quiser editar o visual dela… adicionando bordas…. cor de fundo… cor da letra… bordas e mesclar as células e talz… eu teria de fazer usando o CSS ou o código HTML antigão mesmo???

  2. Comentário por Wandola — 13/04/2010 @ 9:00 pm

    Muito boa, a dica. Valeu..

  3. Comentário por Yuhara — 11/11/2011 @ 10:25 am

    Tava precisando desse script, muito bom o post…. Vlw

  4. Comentário por Márcio Vascs — 02/01/2012 @ 5:03 pm

    Amigo, boa tarde.
    Como faço para forçar que o documento seja salvo em uma determinada pasta?
    Grande abraço e obrigado.

  5. Comentário por leandro garcia — 02/01/2012 @ 5:58 pm

    Olá Marcio, cara não tem como você pelo código setar a pasta alvo do download do usuário. Os navegadores não permitem isso. Seria uma falha de segurança. Imagine, se por exemplo, um site força o download de alguma coisa na pasta core o windows por exemplo, poderia causar um estrago.

Rss dos comentários TrackBack URL

Deixe um comentário