Escolar Documentos
Profissional Documentos
Cultura Documentos
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:
De posse da tabela de uso, vamos inserir alguns registros (caso você ainda não os tenha):
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.
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.
<?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);
$export = mysql_query($select);
$fields = mysql_num_fields($export);
Terceiro passo - Recuperando os nomes dos campos. Eles também serão os nomes dos campos da
planilha:
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
} else {
$line .= $value;
}
// 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
if ($dados== "") {
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("Pragma: no-cache");
// Não expira
header("Expires: 0");
?>