Exportar MySQL para XLS

Publicado por Johny 14/09/2006

[ Hits: 19.653 ]

Download excel.php




Script para exportar os dados de uma tabela em MySQL para o formato XLS (Excel/BrOffice.org Calc).

  



Esconder código-fonte

<?php

/* 

Adaptado de : http://www.phpfreaks.com/tutorials/114/0.php

*/


//Configuração da BD
$mysql_host="localhost";
$mysql_login="root";
$mysql_pass="password";
$mysql_db="nomedabasededados";

$connect = mysql_connect($mysql_host, $mysql_login, $mysql_pass) or die ('Erro Connect');
    mysql_select_db($mysql_db) or die ('Erro Select DB');

//Nome da tabela a ser exportada
$table="nomedatabela";

    $select = "SELECT * FROM ".$table;                
    $export = mysql_query($select);
    $fields = mysql_num_fields($export); 
    
    for ($i = 0; $i < $fields; $i++) {
        $header .= mysql_field_name($export, $i) . "\t"; 
    }
        
    while($row = mysql_fetch_row($export)) {
        $line = '';
        foreach($row as $value) {                                            
            if ((!isset($value)) OR ($value == "")) {
                $value = "\t";
            } else {
                $value = str_replace('"', '""', $value);
                $value = '"' . $value . '"' . "\t";
            }
            $line .= $value;
        }
        $data .= trim($line)."\n";
    }
    $data = str_replace("\r","",$data); 
    
    if ($data == "") {
        $data = "\n(0) Records Found!\n";                        
    }
    else{
        $hoje=date("Y_m_j");              
        header("Content-type: application/x-msdownload");
        header("Content-Disposition: attachment; filename=".$table."_".$hoje.".xls");
        header("Pragma: no-cache");
        header("Expires: 0");
        print "$header\n$data";  
    }
    
?>

Scripts recomendados

Classe MySQLDatabase [golfinho/Elefante]

Banco de Dados MySQL

Classe de conexão com banco de dados PostGreSQL [golfinho/Elefante]

Conversor de datas para banco de dados

Testando servidor MySQL e base de dados


  

Comentários
[1] Comentário enviado por kravetz em 04/10/2006 - 11:34h

Script bom por ser de fácil configuração. É só digitar o nome do banco de dados e o da tabela MySQL (e a senha, obviamente), que ele faz o resto por conta própria, gerando um arquivo xls.
Funciona bem para o Microsoft Excel. Já o BrOpenOffice Calc 2.0 ele não abriu o arquivo gerado, não sei porquê.

[2] Comentário enviado por lardinho em 21/09/2007 - 22:49h

opa, cara tava vendo teu script, me tira so uma duvida, quero mostrar apenas alguns campos do mysql, como faria?

[3] Comentário enviado por muitobem em 22/09/2007 - 18:35h

Para mostrar apenas alguns campos alteras a seguinte linha

$select = "SELECT * FROM ".$table;
e onde tá * , substituis pelo nome dos campos da tabela que queres mostrar.

Ex:
$select = "SELECT Nome,Morada,Telefone FROM ".$table;

[4] Comentário enviado por jetro em 11/10/2007 - 15:51h

Amgo...

Parabéns pelo Script. Muito me ajudou.
Porém, na versão 4 do Mysql o mysql_num_fields não funciona. Andei sondando e tentei substituir por mysql_field_count mas mesmo assim não funcionou.
Vc pode me ajudar?
Abraço
Jetro

[5] Comentário enviado por garciaon em 27/01/2008 - 18:16h

Opa, amigo! Utilizei seu script e rodou perfeitamente. Muito obrigado, poupou um trabalhão!

Aquele abraço,

Pedro

[6] Comentário enviado por algmelo em 14/03/2008 - 17:57h

Olá, amigo. Td bem? Muito legal o script! Funcionou perfeitamente!

Só uma coisa que poderia ser implantado, é pra formatar as linhas, pelo menos pra colocar uma cor de fundo no cabeçalho, pra diferenciar.

Se pudéssemos escolher em entre a font do cabecalho, cor da font, cor de fundo do cabecalho, font das linhas e cor das linhas ( pelo menos fazer uma "zebrinha", tipo, cinza, branco, cinza, branco ), iria ficar bárbaro!

São apenas sugestões. O script cumpre o que promete!

Abração, sucesso e que Deus abençoe!

[7] Comentário enviado por c2nunes em 16/04/2010 - 13:33h

Olá Johny, parabéns.

Seu código caiu como uma luva para meu aplicativo. Entretanto, em minha tabela há campo texto e valores. Seu código está tratando todos como texto e assim tras ponto ao envés de virgula para centavos. Como corrijo isso? Tens uma solução? Sou aprendiz em programação MYSQL e PHP.

Abs.

[8] Comentário enviado por c2nunes em 01/12/2010 - 10:52h

Jonny, boa tarde.

Como posso alterar e formatar o título da planilha na exportação?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts