Boteco Digital

Exportando dados para Excel com PHP

Olá pessoal, quem nunca teve a necessidade de exportar dados de seu sistema online? E sem ter que acessar o seu painel do BD?

Além de proporcionar mais eficiência no seu trabalho é um ótimo recurso a ser implementado no painel administrativo de seu cliente.

Exportar do MySQL para o Excel nada mais é do que construir uma tabela HTML e dentro dela carregar os dados com PHP e depois forçar o download. Para isto teremos 2 arquivos: um arquivo PHP separado para exportar a tabela chamado ‘exporta.php’ e outro arquivo HTML para o usuário informar os parâmetros chamado ‘consulta.html’.

Em nosso exemplo faremos uma consulta na tabela ‘vendas’ com uma condição de código do produto informada pelo usuário e o usuário também poderá informar o nome do arquivo a ser exportado.

Vamos ao código:

consulta.html

<form action="exporta.php" method="post">
    <label>Codigo do produto: </label>
    <input type="number" name="codigo">
    <label>Nome do arquivo exportado: </label>
    <input type="text" name="nome_arquivo">
    <input type="submit" value="Exportar">
</form>

Neste arquivo usaremos este formulario sismples para receber o codigo do produto e nome do aqruivo que será gerado.

exporta.php


<?php
    $nome_arquivo = $_POST['nome_arquivo'];
    $codigo = $_POST['codigo'];
    header("Content-type: application/vnd.ms-excel");
    header("Content-type: application/force-download");
    header("Content-Disposition: attachment; filename=$nome_arquivo.xls");
    header("Pragma: no-cache");
?>
<table>
    <tr>
        <td>Cliente</td>
        <td>Data da Comprar</td>
        <td>Valor</td>
        <td>Produto</td>
    </tr>
<?php
    mysql_connect('endereço','usuario','senha');
    mysql_selectdb('bd');
    $consulta_codigo = mysql_query("select cliente, data, valor, produto from vendas where codigo_produto=".$codigo."'");
    while($venda = mysql_fetch_array($consulta_codigo)){
        echo "<tr><td>".$venda['cliente']."</td><td>".$venda['data']."</td><td>".$venda['valor']."</td><td>".$venda['produto']."</td></tr>";
    }
?>
</table>

Neste outro arquivo recebemos na linha 2 e 3 os dados enviados pelo formulário. Na linha 4 informamos que a aplicação será o Excel, na linha 5 forçamos o download do arquivo. Na linha 6 informamos como o arquivo deve ser salvado, neste caso usamos o ‘filename’ para especificar o nome do arquivo, que será o valor armazenado na variável ‘nome_arquivo’ e no formato xls. E na linha 7 dizemos ao navegador para não fazer cache.

Iniciamos uma tabela no HTML e criamos um cabeçalho para ela. Na linha 17 conectamos ao MySQL e na linha 18 selecionamos o BD. Depois na linha 19 efetuamos uma consulta ao BD com a condição do código do produto. Criamos um ‘while’ na linha 20, para que enquanto existir resultados da consulta MySQL, ele exiba os dados no formato de tabela HTML conforme a linha 21. Quando o while acabar de ser executado, o navegador inicia o download do arquivo que poderá ser aberto no Excel.

Por hoje é isso pessoal.

Categorias PHP

Graduando em Engenharia de Computação pela UFPel, entusiasta de Software Livre, voluntário na Comunidade Mozilla Brasil e coordenador do FLISoL Pelotas, atua como desenvolvedor Full Stack. Atualmente engajado para a abertura do Firefox Student Ambassadors Club UFPel.

Outros posts do autor
comments powered by Disqus