PHP é a Quinta-Feira – HEADERs (parte 2)

9 Comentários

Por Pedro Peixoto para o PPLWARE
A extracção para Excel é uma funcionalidade essencial nas aplicações WEB, uma vez que permite que um dado conjunto de dados seja exportado e posteriormente manipulado de uma forma mais adequada às necessidades individuais de cada utilizador. Existem já muitas soluções disponíveis, algumas gratuitas, que podem ser usadas, de modo a poupar o trabalho ao programador. Mas será que, precisamos de centenas de linhas de código para fazer uma tarefa destas? Não, hoje, damos continuidade ao último artigo (ver aqui), onde falámos sobre headers e vamos aprender como é possível, em três linhas de código, disponibilizar uma extracção de uma página HTML para Excel.

php_00
Em primeiro lugar vamos criar uma página simples com uma tabela para usarmos como exemplo.

Construímos um array de clientes.

<?php
	//os clientes poderiam ser lidos de uma base de dados, neste caso vamos escrever manualmente
	$clientes[1]=array('nome'=>'António Fialho','telefone'=>'982367832','email'=>'afialho@email.pt');
	$clientes[2]=array('nome'=>'David Garcia','telefone'=>'982365645','email'=>'dgarcia@email.pt');
	$clientes[3]=array('nome'=>'Ernesto Jorge','telefone'=>'985672462','email'=>'ernesto@email.pt');
?>

Para simplificar a leitura tenho por hábito alternar as cores das tabelas pelo que necessitamos de dois estilos:


Falta agora fazer o código que desenha a tabela:  

$cliente)
			{
				//o resto da divisão do id por dois vai devolvendo 1 ou 0 conforme numero par ou impar
				//de seguida escrevo os dados do cliente
				echo '
					
				';
			}
		?>
				
	
Nome do clienteTelefoneEmail
' . $cliente['nome'] . '' . $cliente['telefone'] . '' . $cliente['email'] . '

E temos finalmente a nossa tabela:

tabela_00 Neste ponto temos uma página normal com uma tabela. Vamos agora perceber como é fácil adicionar a funcionalidade de extracção utilizando headers. Antes de mais, é necessário um link/botão de exportar para excel:

<a href="?export=excel">Exportar esta tabela para excel</a>

O link para exportar aponta para a própria página, apenas adicionei uma variável GET “export” com o valor “excel”. Desta forma quando o link for clicado a página será recarregada mas a variável $_GET[‘export’] vai ter o valor “excel”.

Por último, e mais importante, temos que fazer uma verificação no início do ficheiro, se a variável $_GET[‘export’] for “excel” adicionamos os headers que permitem ao browser interpretar a página como um ficheiro excel:

if ($_GET['export']=='excel')
	{
		header("Content-Type: application/vnd.ms-excel");
		header("Expires: 0");
		header("Content-Disposition: attachment; filename=exportacao.xls");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	}

Depois de clicar no link, é gerado o ficheiro Excel:

tabela_01

Como verificamos, o ficheiro foi gerado correctamente, podemos apenas fazer uma melhoria: quando exportamos para Excel não escrever o link final. Para isso vamos substituir código html do link pelo código PHP:

Exportar esta tabela para excel';
?>

Temos finalmente o nosso script pronto.

'António Fialho','telefone'=>'982367832','email'=>'afialho@email.pt');
	$clientes[2]=array('nome'=>'David Garcia','telefone'=>'982365645','email'=>'dgarcia@email.pt');
	$clientes[3]=array('nome'=>'Ernesto Jorge','telefone'=>'985672462','email'=>'ernesto@email.pt');
?>

	
		Extracção Excel
		
	
	
		$cliente)
					{
						//o resto da divisão do id por dois vai devolvendo 1 ou 0 conforme numeros par ou impar
						//de seguida escrevo os dados do cliente
						echo '
							
						';
					}
				?>
				
			
Nome do clienteTelefoneEmail
' . $cliente['nome'] . '' . $cliente['telefone'] . '' . $cliente['email'] . '
Exportar esta tabela para excel'; } ?>

Foi difícil? Confuso? Em casos simples como este, é fácil adicionar esta funcionalidade à aplicação sem grandes complicações nem “ficheiros feitos”. No próximo artigo vou explicar como fazer um sistema simples de downloads.

Partilhar:
Tags:

Comentários

9

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de clica aqui =D

    Gostei imenso do artigo, continuem que eu agradeço 😉

  2. Avatar de jedi
    jedi

    gostei tb,á espera do proximo, que ainda vai dar mais jeito. 😉

  3. Avatar de Balaico
    Balaico

    Meus Parabéns, pela grande qualidade e versatilidade dos vários artigos apresentados, seja na área de programação ou noutra qualquer, sem qualquer tipo de dúvida o vosso painel de “posters” têm uma qualidade bem acima da média …

  4. Avatar de Visitante
    Visitante

    É para continuar 🙂 vou esperar pelo do downloads 🙂

  5. Avatar de Sandro
    Sandro

    Pedro adoro teus Post sobre PHP continue postando estamos no aguardo

    Não pare …

    Sucesso !

  6. Avatar de Ricardo Santos
    Ricardo Santos

    um offtopic em tom de sugestão: Uso de jQuery : Drag Drop onde o objecto que foi drop possa ser inserido numa BD. P.ex uma lista de dragables selecionar um ou vários da lista e “dropar” e submeter os que foram dropados numa BD (ou para finalidade de teste fazer um echo do que foi dropado. CUmpz.

  7. Avatar de José Oliveira
    José Oliveira

    Estes tutoriais de PHP são do meu interesse.
    Gostaria que continuassem com mais destes tutoriais.
    Além de fazerem crescer a comunidade de programadores nacionais, aínda criam uma legião maior de seguidores!!! 😀

    Espero antentamente por novos tutoriais e/ou dicas!!

    Cumprimentos

  8. Avatar de armando
    armando

    Gostaria de saber o código fonte para fazer um formulário de contacto com os seguintes campos:
    – Nome
    – Telefone
    – Email
    – Assunto
    Botão Enviar;
    Botão Limpar;
    O contacto foi enviado com sucesso. Entrarei em contato o mais brevemente possível.