Atualizado em 08 de Janeiro de 2014

Exportando Dados do MySQL para Excel com PHP

Olá pessoal,

Exportar dados de um programa para outro e muito comum ainda mais quando estamos trabalhando com dados que necessitam de análise, um dos programas mais usados para análise de dados é o Excel, por este motivo neste post vou mostrar como exportar os dados do MySQL para o Excel com o PHP.

Em nosso exemplo não vou explicar como fazer conexão com o banco de dados, caso você seja iniciante em PHP visite o nosso Curso de PHP Básico para aprender passo a passo esta fantástica linguagem de programação.

Então vamos ao script:

<?php
// Inclui a conexão
include_once('conexao.php');

// Nome do Arquivo do Excel que será gerado
$arquivo = 'dados_emails.xls';

// Criamos uma tabela HTML com o formato da planilha para excel
$tabela = '<table border="1">';
$tabela .= '<tr>';
$tabela .= '<td colspan="2">Tabela de E-mails</tr>';
$tabela .= '</tr>';
$tabela .= '<tr>';
$tabela .= '<td><b>Nome</b></td>';
$tabela .= '<td><b>Email</b></td>';
$tabela .= '</tr>';

// Puxando dados do Banco de dados
$resultado = mysql_query('SELECT * FROM emails');

while($dados = mysql_fetch_array($resultado))
 {
  $tabela .= '<tr>';
  $tabela .= '<td>'.$dados['nome'].'</td>';
  $tabela .= '<td>'.$dados['email'].'</td>';
  $tabela .= '</tr>';
 }

$tabela .= '</table>';

// Força o Download do Arquivo Gerado
 header ('Cache-Control: no-cache, must-revalidate');
 header ('Pragma: no-cache');
 header('Content-Type: application/x-msexcel');
 header ("Content-Disposition: attachment; filename=\"{$arquivo}\"");
echo $tabela;
?>

O próprio código já esta bem comentado, mas em caso de dúvida comentem.

Veja também como Importando Dados do Excel para MySQL com PHP.


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Comentários

Sua foto do perfil

Mauro

05 de Fevereiro de 2016 - 21:43

Sua foto do perfil

Mauricio Programador

Olá Mauro,

Na verdade se você quer salvar no seu banco de dados uma fração deve usar o float e não Varchar.

Como você esta com varchar vai ter que converter este dado antes de enviar para o Excel.

Para converter use:

$valor_float = floatval ($variavel);

Abraço.

19 de Fevereiro de 2016 - 14:41

Sua foto do perfil

Raphael Higashi Silva

05 de Fevereiro de 2016 - 15:23

Sua foto do perfil

Mauricio Programador

Olá Raphael,

o PHP não tem acesso a todos os recursos que se usássemos o Excel diretamente teríamos a disposição.

Eu realmente nunca precisei fazer este tipo de operação, mas após a sua pergunta pesquisei e não encontrei nada.

Se encontrar algo compartilhe conosco.

Abraço.

05 de Fevereiro de 2016 - 15:37

Sua foto do perfil

Mudjau

28 de Janeiro de 2016 - 09:26

Sua foto do perfil

Alexandre Possebon

23 de Outubro de 2015 - 19:46

Sua foto do perfil

Mauricio Programador

Olá Alexandre,

Na verdade eu nunca fiz este teste com o br, mas acredito que não va da certo pois não e este comando que o Excel usa para quebrar linhas dentro das células.

Mas se achar uma solução e quiser compartilhar com nós fica a vontade.

Abraço.

30 de Outubro de 2015 - 14:21

Sua foto do perfil

Luan

11 de Julho de 2015 - 23:57

Sua foto do perfil

Mauricio Programador

Olá Luan,

Obrigado pelo reconhecimento.

Bom primeiro você terá que criar este arquivo físico no seu servidor, para isso pode usar o post que indico abaixo:

http://www.mauricioprogramador.com.br/posts/como-criar-arquivos-com-php

Depois disso pasta usar o comando do phpmailer para anexar com o caminho do arquivo:

$mail->AddAttachment("CAMINHO E NOME DO ARQUIVO");

Prontinho.

Abraço.

13 de Julho de 2015 - 11:33

Sua foto do perfil

Herbert Resende Freitas

25 de Maio de 2015 - 10:54

Sua foto do perfil

Mauricio Programador

Olá Herbert,

Se aceitar uma sugestão, crie apenas o link então, e quando o usuário clicar no click ele vai para pagina que faz o cvs e baixa o arquivo, assim você vai otimizar processamento em seu servidor.

E se precisar mostrar os dados para o usuário antes dele clicar no link, apenas exiba a tabela com a consulta.

Abraço.

01 de Junho de 2015 - 09:12

Sua foto do perfil

Danilo Tessitore

20 de Maio de 2015 - 14:29

Sua foto do perfil

Mauricio Programador

Olá Danilo,

Deu erro? Qual o erro?

Abraço.

21 de Maio de 2015 - 09:52

Sua foto do perfil

Cléber Balota

16 de Abril de 2015 - 00:37

Sua foto do perfil

Mauricio Programador

Olá Cléber,

Você deve fazer a parte de exportar em uma pagina separado do seu HTML.

Abraço.

16 de Abril de 2015 - 09:11

Sua foto do perfil

almir

26 de Março de 2015 - 17:22

Sua foto do perfil

Mauricio Programador

Olá Almir,

o PHP não tem acesso a todos os recursos que se usássemos o Excel diretamente teríamos a disposição.

Eu realmente nunca precisei fazer este tipo de operação, mas após a sua pergunta pesquisei e não encontrei nada.

Se encontrar algo compartilhe conosco.

Abraço.

27 de Março de 2015 - 11:01

Sua foto do perfil

Almir

Mauricio tem como colocar imagem nesta planilha?

31 de Março de 2015 - 10:05

Sua foto do perfil

Mauricio Programador

Almir,

Como lhe falei acima, o PHP não tem acesso a todos os recursos.

Se encontrar algo me avise, post ai para nos.

Abraço.

31 de Março de 2015 - 10:06

Sua foto do perfil

CARLOS HENRIQUE MENDES

19 de Março de 2015 - 10:52

Sua foto do perfil

Jeferson

18 de Março de 2015 - 21:13

Sua foto do perfil

Mauricio Programador

Olá Jeferson,

Duas coisas que você pode testar para ver se o erro continua.

Primeira: Quando usamos este comando de header para fazer download, ele não pode conter nenhuma saída de texto antes do header, verifique se existe alguma.

Segundo: Se localmente este funcionando o bom seria testar em outro host que não seja este seu atual e confirmar realmente se não e problema dentro do host de hospedagem.

Testa ai, qualquer coisa da um retorno.

Abraço.

19 de Março de 2015 - 09:22

Sua foto do perfil

CARLOS HENRIQUE MENDES

18 de Março de 2015 - 10:22

Sua foto do perfil

Jeferson Machia

11 de Março de 2015 - 12:15

Sua foto do perfil

Edimilson Corrêa Duarte

08 de Março de 2015 - 04:10

Sua foto do perfil

Rodolpho Netto

09 de Janeiro de 2015 - 09:20

Sua foto do perfil

Mauricio Programador

Olá Rodolpho,

Basta você ajustar a codificação de caracteres que ele irá escrever certo.

Teste um desses dois comandos: utf8_encode, utf8_decode

Vai resolver o problema.

Abraço.

12 de Janeiro de 2015 - 10:21

Sua foto do perfil

Danilo

16 de Novembro de 2014 - 20:07

Sua foto do perfil

Mauricio Programador

Olá Danilo,

De um echo na variável $tabela e verifique se o resultado vindo do banco de dados esta sendo gerado de forma correta.

Abraço.

17 de Novembro de 2014 - 08:52

Sua foto do perfil

Danilo

Ola Mauricio obrigado pela atenção,

Os dados vem corretamento do banco, o problema ocorre no restante da tabela, no espaço da tabela onde não tem dados, também não tem células aparece como se fosse um arquivo word.

21 de Novembro de 2014 - 08:50

Sua foto do perfil

Mauricio Programador

Danilo,

Posta o seu código e a sua tabela ai para eu ver.

Abraço.

21 de Novembro de 2014 - 08:51

Sua foto do perfil

danilo

olá Mauricio mandei um email com o código e tabela.

25 de Novembro de 2014 - 08:56

Sua foto do perfil

Regis

23 de Outubro de 2014 - 10:39

Sua foto do perfil

Patrick Gomes

19 de Outubro de 2014 - 18:06

Sua foto do perfil

Mauricio Programador

Olá Patrick,

Tem como criar sim gráficos em PHP.

Vou criar um post mostrando como se faz.

Abraço.

20 de Outubro de 2014 - 10:42

Sua foto do perfil

Bruno

13 de Outubro de 2014 - 10:24

Sua foto do perfil

Marcus Barbosa

Muito obrigado me ajudou bastante

09 de Agosto de 2014 - 09:21

Sua foto do perfil

Altair Antonio

18 de Maio de 2014 - 11:46

Sua foto do perfil

Mauricio Programador

Olá Altair,

tente usar assim:

utf8_encode($dados['nome']);

Deve resolver o problema.

Abraço.

19 de Maio de 2014 - 10:11

Sua foto do perfil

Fabrício Schunemann

19 de Abril de 2014 - 14:00

Sua foto do perfil

MARCELO BRANCO

02 de Abril de 2014 - 18:02

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER