Gerando um arquivo XLS a partir de um SQL.

PHPPEAR
Enviado por Pedro Faria em Sex, 02/12/2005 - 15:26.PHP | PEAR

Bem, como o NoComments é um inutil e preguiçoso, tive remodelar o código para gerar um arquivo de Excel... em troca ele me prometeu 40% de seu sálario e mais 20% do seu 13°.

Para esta ocasião achei interessante usar a classe Spreadsheet_Excel_Writer para gerar o xls... veja como é simples e lembre que funciona em windows e linux sem problema.

  1. <?php
  2.  
  3. require_once "DB.php";
  4. require_once 'Spreadsheet/Excel/Writer.php';
  5.  
  6. /**
  7. * Configuracao do banco de dados
  8. */
  9. $dsn = "mysql://usuario:senha@host/bancodedados";
  10.  
  11. /**
  12. * Escreva aqui sua query.
  13. */
  14. $sql = "";
  15.  
  16. /**
  17. * Arquvio que sera gerado com o resultado da query
  18. */
  19. $xls_file = "resultado.xls";
  20.    
  21. /**
  22. * Inserre o nome dos campos na primeira linha
  23. */
  24. $header = true;
  25.  
  26.  
  27. $db = DB::connect($dsn);
  28.  
  29. if (DB::isError($db)) {
  30.     trigger_error("Conection to database server fail. (".$db->getMessage().")", E_USER_ERROR);
  31. }
  32.  
  33. $db->setFetchMode(DB_FETCHMODE_ASSOC);
  34.  
  35. $rs = $db->query($sql);
  36.  
  37. if (DB::isError($rs)) {
  38.     $db->disconnect();
  39.     trigger_error($rs->toString(), E_USER_ERROR);
  40. }
  41.  
  42. if ($rs->numRows() == 0) {
  43.     $db->disconnect();
  44.     trigger_error("No records selected.", E_USER_ERROR);
  45. }
  46.  
  47. $workbook = new Spreadsheet_Excel_Writer();
  48. $workbook->send($xls_file);
  49. $worksheet =& $workbook->addWorksheet('My first worksheet');
  50.  
  51. $row = $col = -1;
  52.  
  53. while($row_db = $rs->fetchRow()) {
  54.  
  55.     if ($header) {
  56.         $row++;
  57.         $header = false;
  58.  
  59.         foreach($row_db as $key => $value) {
  60.             $worksheet->write($row, ++$col, $key);
  61.         }
  62.     }
  63.  
  64.     $row++;
  65.     $col = -1;
  66.  
  67.     foreach($row_db as $key => $value) {
  68.         $worksheet->write($row, ++$col, $value);
  69.     }
  70.  
  71. }
  72.  
  73. $rs->free();
  74.  
  75. $workbook->close();
  76. $db->disconnect();
  77.  
  78. ?>

t+



Enviado por Lucas (não verificado(a)) em Seg, 14/09/2009 - 14:21.

Caracolis...........
os caminhos todos errados ......trabalheira danada..

Mais no fim funcionou legal

Ótima dica