SdevLab – Exemplo de Código | Como criar e exportar planilhas do Excel com dados de um BD em PHP

Mês passado fiz um post ensinando a gerar uma planilha excel com um código php, porém esta planilha era bastante simples, o php exportava praticamente um molde porque os dados eram todos inseridos diretamente na planilha.

Como criar e exportar planilhas do Excel com dados de um BD em PHP

Agora vamos partir para um nivel 2 deste projeto porque os dados serão fornecidos por um banco de dados mysql, para isto segue o código abaixo que já está comentado, deixando somente uma dica adicional, que está abaixo do código.

<?php
//-- conecta no banco de dados automaticamente, tem um post aqui
//-- no blog ensinando como fazer
include "conecta_mysql.inc";
//- Definimos o nome do arquivo que será exportado -------------
$arquivo = 'planilha.xls';
//--- Consultando dados no banco -------------------------------
$sql = mysql_query("SELECT campo1,campo2,campo3
FROM tabela") or die(mysql_error());
//--- Fazendo o preenchimento inicial --------------------------
$row=mysql_fetch_array($sql);
//--- Contando o numero de linhas que a consulta gerou ---------
$sql2 = mysql_query("SELECT * FROM formulario");
$aux = mysql_num_rows($sql2);
// Criamos uma tabela HTML com o formato da planilha
$html = '';
$html .= '<table border="1">';
$html .= '<tr>';
$html .= '<td colspan="3"><b>Gerando uma planilha</b></td></tr>';
// -- Cabeçalho do arquivo -------------------------------------
$html .= '<tr><td align="center"><b>Campo 1</b></td>';
$html .= '<td align="center"><b>Campo 2</b></td>';
$html .= '<td align="center"><b>Campo 3</b></td></tr>';
//--------------------------------------------------------------
for($i=1; $i<=$aux; $i ++){
$sql = mysql_query("SELECT campo1,campo2,campo3 FROM tabela
WHERE id = ".$i) or die(mysql_error());
$row=mysql_fetch_array($sql);
$html .= '<tr><td>'.$row[0].'</td><td>'.$row[1].'</td>
<td>'.$row[2].'</td></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;
?>

Veja que dentro do for, usei o índice $i para comparar com a id (chamada de campo1) fazendo assim a montagem correta da planilha. Se eu não tivesse feito esta comparação, eu teria $i linhas iguais no excel.

Até a próxima!

😉

6 comentários sobre “SdevLab – Exemplo de Código | Como criar e exportar planilhas do Excel com dados de um BD em PHP

  1. Bom dia..
    ando dando uma fuçada em seu blog, e o conteúdo postado aqui é realmente bom.
    Mas, neste artigo, por exemplo… tenho algumas sugestões para melhorar o script…

    Você fez uma query para consulta geral, outra pra contar as linhas, e dentro do for, vc faz um select por vez a cada iteração do laço…
    Cara…. se tiver 5 mil registros na tabela, isso aí sobrecarregará muito o sistema…

    Um dica, em resumo, é usar apenas o Primeiro Select..
    Armazenar tudo num vetor (com o fetch_array)..

    Aí pra fazer o laço vc pode usar o while, usando o resultset do array… ou então dá um count no array e faz um while ou o for mesmo baseado na qtde de indices que tem o array…

    Aí dentro do laço, vc vai iterando os índices do array… e pegando todos os campos.

    Com isso… vc poderá diminuir de 5 mil selects para um…

    Falou

  2. Kra, mando bem no comentário, valeu!
    eu sou noob em sql ainda….to fazendo a matéria na facul esse semestre só, aí o que eu sei só serve pra apagar fogueira msm, no geral da pra fazer algumas coisas mas nem tudo fica 100%, vlw msm ae a colaboração, inclusive se tiver alguma consideração sobre qualquer outro post e quiser contribuir, fique a vontade!
    Assim que tiver um tempinho vou testar sua idéia e se rolar msm posto o resultado aki tb.

    vlw kra,
    att
    sanoj
    😉

  3. cara não sei te falar viu, mas pelo que eu vi tem diferença de navegador pra navegador. Eu testei no firefox só, e o arquivo abre direto para o usuario…. no explorer se não me engano não é a mesma coisa…

  4. como faço para que quando eu selecionar o nome aparecer o id co nome

    <?php
    //acesso ao bd
    include ('connection.php');
    $sql = mysqli_query($db,"SELECT email,id FROM usuarios") or die(mysqli_error());
    while($row=mysqli_fetch_array($sql)){
    echo "”.$row[‘email’].””;
    }

    mysqli_close($con);
    ?>

    • Oi Fabiano,

      Não entendi direito sua pergunta! Você quer selecionar o nome e fazer aparecer o nome com o id correto?
      Quando você fala selecionar, quer dizer fazer o SELECT no banco de dados?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s