Você está na página 1de 3

Gerando planilhas com PHP e Mysql

Apesar de hoje existirem diversas formas de geração dinâmica de arquivos, ainda há casos em que precisamos
enviá-los de forma rápida, para outras pessoas, sem correr o risco de gerar a incompatibilidade de formato.

Tudo bem que hoje temos XML para conversar entre servidores e trafegar informações. Mas pense em
precisar enviar para o seu chefe (que não manja nada de informática, claro), um relatorio com as vendas do
mês. Ele provavelmente conhece o Excel. Nada mais prático então, do que gerar para ele uma planilha do
excel, dinâmica, onde ele mesmo pode clicar no link e gerar, tendo informações atualizadas todo o tempo.

É baseado neste cenário, que trabalharemos a seguir. Crie a base de dados chamada vendas (ou utilize a sua,
efetuando as modificações correspondentes) de acordo com o modelo abaixo:

CREATE TABLE `vendas` (`numerodopedido` INT( 3 ) UNSIGNED ZEROFILL NOT NULL ,

`vendedor` VARCHAR( 255 ) NOT NULL ,

`produto` VARCHAR( 255 ) NOT NULL ,

`precoproduto` DECIMAL( 10, 2 ) NOT NULL ,

`datadavenda` DATETIME NOT NULL ) ENGINE = MYISAM ;

De posse da tabela de uso, vamos inserir alguns registros (caso você ainda não os tenha):

INSERT INTO `vendas` ( `numerodopedido` , `vendedor` , `produto` , `precoproduto` , `datadavenda` ) VALUES (


'009', 'João da Silva', 'Microprocessador Pentium 4', '145.50', '2007-03-29 14:05:20' ), ( '010', 'Maria de Souza',
'Placa mãe Asus', '420.00', '2007-03-29 14:05:47' );

Agora que temos a base de dados e alguns dados a mostrar, vamos ver o que fazer com eles, para que seu
chefe fique contente.

 Criando o arquivo geraplanilha.php

Este arquivo conterá basicamente, tudo o que você precisa para: conectar-se ao banco, ler as informações
presentes no mesmo, gerar o XLS e posteriormente gerar o arquivo para download.

 Primeiro passo - Criando a conexão com o banco de dados:

<?php

define(db_host, "localhost");

define(db_user, "plugmasters");
define(db_pass, "senha");

define(db_link, mysql_connect(db_host,db_user,db_pass));

define(db_name, "banco_plugmasters");

mysql_select_db(db_name);

 Segundo passo - Trazendo as informações da tabela vendas:

$select = "SELECT * FROM vendas ORDER BY datadavenda DESC";

$export = mysql_query($select);

// aqui pego a quantidade de campos existentes na tabela, afim de formar a planilha

$fields = mysql_num_fields($export);

 Terceiro passo - Recuperando os nomes dos campos. Eles também serão os nomes dos campos da
planilha:

for ($i = 0; $i < $fields; $i++) {

$header .= mysql_field_name($export, $i) . " ";

 Quarto passo - Trazendo as informações encontradas em cada linha de registro do banco:

while($row = mysql_fetch_row($export)) {

$line = '';

foreach($row as $value) {

if ((!isset($value)) OR ($value == "")) {

$value = " ";

} else {

$value = str_replace('"', '""', $value);

$value = '"' . $value . '"' . " ";

$line .= $value;
}

// o trim retira os espaços encontrados no começo e no final de cada linha encontrada.

$dados .= trim($line)." ";

// substituindo todas as quebras de linha ao final de cada registro, que por padrão seria por uma valor em
branco, para que a formatação fique legível

$dados= str_replace(" ","",$dados);

 Quinto passo - Tratamento básico de erro:

// Caso não encontre nenhum registro, mostra esta mensagem.

if ($dados== "") {

$dados = " Nenhum registro encontrado! ";

 Último passo - Cabeçalhos e instruções para geração e download do arquivo:

header("Content-type: application/octet-stream");

// este cabeçalho abaixo, indica que o arquivo deverá ser gerado para download (parâmetro attachment) e o
nome dele será o contido dentro do parâmetro filename.

header("Content-Disposition: attachment; filename=relatorio_vendas_plugmasters.xls");

// No cache, ou seja, não guarda cache, pois é gerado dinamicamente

header("Pragma: no-cache");

// Não expira

header("Expires: 0");

// E aqui geramos o arquivo com os dados mencionados acima!

print "$header $dados";

?>

Você também pode gostar