mySQL para XLS usando o PHP?

Como posso criar um documento .XLS a partir de uma tabela mySQL usando o PHP?

Experimentei praticamente tudo, sem sucesso.

Basicamente, eu preciso pegar dados de formulário e inseri-lo em um database, o que eu fiz, e então eu preciso recuperar esses dados de tabela e analisá-lo em um arquivo do microsoft excel, que precisa ser salvo automaticamente no servidor web.

 $v ) { // take the key and make label // make it uppper case and replace _ with ' ' xlsWriteLabel( $row, $col, strtoupper( ereg_replace( "_" , " " , $k ) ) ); $col++; } // prepare for the first real data row $col = 0; $row++; $first = false; } // go through the data foreach( $qrow as $k => $v ) { // write it out xlsWriteLabel( $row, $col, $v ); $col++; } // reset col and goto next row $col = 0; $row++; } xlsEOF(); exit(); ?> 

Eu simplesmente não consigo descobrir como integrar fwrite em tudo isso para escrever os dados gerados em um arquivo .xls, como eu faria isso?

Eu preciso que isso funcione com bastante urgência, então qualquer ajuda será muito apreciada. Thanx pessoal.

Se você tiver algum tipo de front end para o seu database (como phpMyAdmin ou SQLyog), você pode exportar a tabela (ou o resultado de qualquer consulta SELECT) para o CSV e abrir isso no Excel.

EDIT após comentários: eu criei um XLS uma vez. Foi um pouco diferente, mas o que eu fiz foi colocar isso no topo do meu PHP (antes de gerar qualquer saída):

 header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=\"name.xls\""); 

E no resto do script, acabei de fazer eco de uma tabela (tabela, tr, td … etc.) A execução deste script proporcionaria ao usuário um download. Eu acho que existem algumas opções diferentes para o atributo Content-disposition (talvez haja um que permita que o script guarde o arquivo).

Eu usei o PEAR Spreadsheet_Excel_Writer muito em meus projetos e isso funciona bem. Ele gera arquivos de nível 5.0 do Excel, no entanto, talvez não seja o suficiente para seus propósitos, se você precisar de mais avançado do que isso, mas gerará um .xls nativo e não apenas um .csv mascarando como .xls.

Se eu for correto, o script que você publicou está funcionando corretamente e cria um arquivo xls correto, e você quer apenas salvar a saída, veja http://php.net/manual/en/book.outcontrol.php . Com ob_get_clean (), você pode obter o arquivo xls criado e escrevê-lo em algum lugar para o servidor.

Talvez, você poderia considerar também outras opções, como salvar seus dados em algum outro formato que o Excel pode ler (.csv, provavelmente pode ler também alguma tabela html / xml).

Eu tentei com ob_get_clean (), mas não funcionou, aqui está o código em que já trabalhei:

  $v ) { // take the key and make label // make it uppper case and replace _ with ' ' xlsWriteLabel( $row, $col, strtoupper( ereg_replace( "_" , " " , $k ) ) ); $col++; } // prepare for the first real data row $col = 0; $row++; $first = false; } // go through the data foreach( $qrow as $k => $v ) { // write it out xlsWriteLabel( $row, $col, $v ); $col++; } // reset col and goto next row $col = 0; $row++; } xlsEOF(); exit(); ?> 

Eu nem sei se isso faz sentido, mas adicionei fwrite às funções xlsBOF, xlsEOF e xlsWriteLabel para tentar e escrever os dados no arquivo exportado.xls, isso poderia funcionar assim?

Tudo está funcionando, aqui é onde a resposta está localizada. 🙂

Salvando um arquivo .xls com fwrite