|
Gerando uma planilha formato XLS com PHP e MySql
Enviado em 19/05/2007 - 11:08
Fonte: A A A A
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, o tema do meu primeiro artigo aqui no Plugmasters. 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:<?phpdefine(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) . "\t";}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 = "\t";} else {$value = str_replace('"', '""', $value);$value = '"' . $value . '"' . "\t";}$line .= $value;}// o trim retira os espaços encontrados no começo e no final de cada linha encontrada. $dados .= trim($line)."\n";}// substituindo todas as quebras de linha ao final de cada registro, que por padrão seria \r por uma valor em branco, para que a formatação fique legível$dados= str_replace("\r","",$dados);Quinto passo - Tratamento básico de erro:// Caso não encontre nenhum registro, mostra esta mensagem. if ($dados== "") {$dados = "\n Nenhum registro encontrado!\n"; } Ú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\n$dados";?> Para ver o script deste arquivo em funcionamento, clique aqui . Espero que tenha sido de valia, e caso tenham dúvidas, por favor me escrevam no [email protected], ou através do formulário de contato do meu site: www.flaviajobs.com.br
Enviado por: brunohcs
Postado em: PHP
Esse artigo foi visualizado 10080 vezes
Compartilhe este artigo
Recomende este artigo a um amigo
Voltar |
>> Comentários
Comentar |
|