Exportar MySQL Para XLS Com PHP

Nas matérias anteriores falamos sobre vários assuntos relacionados ao PHP, tais como: Carrinho de Compras, Sistema de Votações, Notícias, Player de música, entre vários outros assuntos interessantes.

Hoje gostaria de implementar nosso Blog com uma matéria prática e necessária para vários profissionais!

Quem nunca necessitou de exportar um conteúdo da base de dados SQL para XLS, um dia certamente terá esta necessidade!

Hoje, vamos explicar como montar um Script que faça este tipo de atividade!

Você pode dizer: Ah, não preciso fazer isso… meu Gerenciador de Banco de Dados faz por mim!

Sim, claro… fazer através do MySQLFront (ou qualquer outra ferramenta de gerenciamento) é tranquilo!

O problema é quando você precisa fazer através do Script…

Bem… Como fazemos em todas as nossas matérias, em anexo temos disponível os ficheiros para que tu possa estudar e testar a matéria que estamos lhe explicando.

Abaixo vamos disponibilizar a informação passo a passo. ok?

Criando As Tabelas Na Base de Dados MySQL

Antes de partirmos para a programação, abra o ficheiro script-sql.txt (disponível em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias utilizamos como padrão o MySQLFront. Caso tu também esteja utilizando este programa, clique em SQL Editor e cole o conteúdo do script (conforme código e imagem abaixo).


----- Cria a tabela tbl_player -----

CREATE TABLE `tbl_player` (
  `id_musica` int(11) NOT NULL auto_increment,
  `titulo_musica` varchar(150) NOT NULL default '',
  `artista_musica` varchar(150) NOT NULL default '',
  `musica` varchar(255) NOT NULL default '',
  `copyright` varchar(50) NOT NULL default '',
  `status` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id_musica`)
) TYPE=MyISAM;

----- Insere informações na tabela tbl_player -----

INSERT INTO `tbl_player` VALUES (1,'Novo Amor','Carlinhos Félix','LINK DA MUSICA','WebMaster.PT','1');
INSERT INTO `tbl_player` VALUES (2,'Casamento Feliz','Marcia Lourenço','LINK DA MÚSICA','WebMaster.PT','1');

Carregando Informações no BD

Após importar os dados, você poderá conferir o conteúdo inserido (conforme imagem a seguir).

Conferindo Informações Cadastradas

Script De Conexão:

Tendo gerado as tabelas junto a base de dados, vamos agora dar início à programação.

Crie o ficheiro conexao.php e coloque dentro do diretório config.

Neste ficheiro você deverá disponibilizar o script a seguir:


<?
$database = "localhost:3306"; // SERVIDOR E PORTA UTILIZADA
$dbname   = "tutorial"; // BASE DE DADOS
$usuario  = "root"; // USUÁRIO DO MYSQL
$dbsenha  = ""; // SENHA DO MYSQL

$conexao=mysql_connect ($database, $usuario, $dbsenha);
if($conexao){
      if (mysql_select_db($dbname, $conexao)){ print "";
      }else{ print "Não foi possível selecionar o Banco de Dados"; }
}else{ print "Erro ao conectar o MySQL"; }
?>

OBS.: Veja que ao acessar o Servidor, estamos definindo também o número da Porta padrão do MySQL. Caso a Porta utilizada não seja a 3306, efetue a alteração devida!

Script De Exportação

O script que efetua a exportação do conteúdo é bem prático e pode ser facilmente adaptado às suas necessidades!


<?
session_start();
include('config/conexao.php');

// Definimos o nome do arquivo que será exportado
$arquivo = 'planilha.xls';

$query = "SELECT * FROM tbl_player ORDER BY artista_musica";
$resultado = mysql_query ($query);

$html = '';
$html .= '<table border=1>';
$html .= '<tr>';
$html .= '<td colspan=5 align=center><b>MÚSICAS SELECIONADAS</b></tr>';
$html .= '</tr>';
$html .= '<tr>';
$html .= '<td><b>ARTISTA</b></td>';
$html .= '<td><b>TÍTULO DA MÚSICA</b></td>';
$html .= '<td><b>LINK DE CADASTRO</b></td>';
$html .= '<td><b>COPYRIGHT</b></td>';exportando-informacoes-de-mysql-para-xls-atraves-do-php
$html .= '<td><b>STATUS</b></td>';
$html .= '</tr>';

while($campo = mysql_fetch_array ($resultado)){

$artista_musica  = $campo ['artista_musica'];
$titulo_musica   = $campo ['titulo_musica'];
$musica          = $campo ['musica'];
$copyright       = $campo ['copyright'];
$status          = $campo ['status'];

$html .= '<tr>';
$html .= '<td>' . $artista_musica . '</td>';
$html .= '<td>' . $titulo_musica . '</td>';
$html .= '<td>' . $musica . '</td>';
$html .= '<td>' . $copyright . '</td>';
$html .= '<td>' . $status . '</td>';
$html .= '</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;

?>

Abaixo vamos dar uma explicação mais detalhada:

  • Linha 2: Inicia a sessão.
  • Linha 3: Inclui o arquivo de conexão.
  • Linha 6: Criamos uma variável para o arquivo “planilha.xls”.
  • Linha 8 e 9: Seleciona os dados da tabela “tbl_player”.
  • Linha 11 à 22: disponibiliza o HTML com o Topo e Títulos).
  • Linha 24 à 38: While que deverá trazer (nas linhas selecionadas) o conteúdo da base de dados.
  • Linha 40: Fecha a tabela
  • Linha 46 à 52: Header que tem por finalidade forçar o download do sistema
  • Linha 55: Imprime o conteúdo que foi tratado da linha 11 à 40 em tela e sai. OBS.: Como o sistema já gerou a Planilha, o conteúdo da linha 55 será impresso no próprio documeto.
  • Linha 56: Usamos o Comando “exit” para não continuar forçando a impressão (a não ser que você clique em atualizar).

Resumindo:

Após rodar o ficheiro “index.php” no Servidor, a Planilha em XLS será gerada, exportando assim o conteúdo disponível na tabela selecionada (conforme imagem a seguir).

Planilha após exportação

Ficamos por aqui em mais uma matéria! Esperamos tê-lo ajudado em algo…

Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!

Download do código usado neste tutorial: Exportar MySQL Para XLS Com PHP

Be Sociable, Share!

2 Comentários

  1. emanuel

    Tens um erro no codigo, que me fez andar à toa durante 2 horas,

    na parte do script na primeira linha começas o php assim <? e deves começar assim <?php.

    obrigado pelo codigo desenrascas-tes me o dia

Participa! Comenta...