Come creare un file Excel con PHP e MySQL

Quattro semplici passi per esportare dati da sistemi php mysql ad Excel al volo

Apro una nuova sezione del portale dedicata allo sviluppo PHP che presto avrà una sezione dedicata. Creare un file Excel al volo con  php è molto semplice e tremendamente utile nel caso di sviluppo applicazioni orientate al business come piattaforme di BI o gestionali di vario tipo.

La soluzione si articola in 4 semplici passi;
  1. Esecuzione della Query con MySQL
  2. Formattazione delle righe in formato CSV
  3. Invio dell'opportuno Mime-Type
  4. Output

Esecuzione della Query con MySQL

Supponiamo di voler esportare in Excel un elenco clienti da un applicativo php/MySQl la prima cosa da fare sarà ovviamente la query sul db per l'estrazione dati, che sarà qualcosa di simile;

<?php
$hostname = "<host_db>";
$database = "<nome_db>";
$username = "<admin>";
$password= "<password>";
$conn= mysql_pconnect($hostname, $username, $password) or die(mysql_error());
mysql_select_db($database, $conn);
$query = "SELECT nome, cognome, citta FROM clienti";
$clienti = mysql_query($query, $conn) or die(mysql_error());
$row_clienti = mysql_fetch_assoc($clienti);
?>

Formattazione record CSV

A questo punto andiamo a formattare ogni riga separando i campi con la tabulazione ed includendo i campi di testo con i doppi apici. Il carattere speciale di tabulazione in php è "\t" e per includere i doppi apici useremo sempre lo slash;

<?php
do {
$righe.= "\"".$row_clienti['nome']."\"\t\"".$row_clienti['cognome']."\"\t\"".$row_clienti['citta']."\"\n";
} while ($row_
clienti= mysql_fetch_assoc($clienti));
?>

L'invio del Mime-Type

Questa è la parte fondamentale di tutto il codice, l'invio del'header con il  Mime-Type adatto per Excel. Attenzione a non inviare nulla in output prima dell'header, pena il mancato funzionamento;

<?php 
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: nomefile.xls");
?>


e per finire, inviamo i dati e usciamo;

<?php 
print $righe;
exit; 
?>


Se è tutto impostato a dovere, quando si chiama il file non si apre nessuna nuova finestra, ma il browser invia un file CSV ed il sistema apre la classica maschera di salvataggio, quindi apre il foglio Excel con i dati. Ho provato anche ad inviare dati numerici con differenti formati e vengono letti benissimo. Basta utilizzare le funzioni di formattazione del php e non includere il dato nei doppi apici. Testato sia con Explore che con Firefox.

Tags:      

Daniele Di Gregorio

Aggiungi un commento
Sito
(verrà usato l'attributo nofollow)
Nome
Titolo
Digita il codice «
I commenti inseriti non sono moderati e saranno immediatamente visibili nella pagina. Ikaro non si assume alcuna responsabilità su quanto inserito, riservandosi tuttavia il diritto di cancellazione in ogni momento ed a suo insindacabile giudizio. I tag HTML non vengono riconosciuti.

10.11.2006 Opensource e strumenti on line


Vuoi ricevere gli ultimi articoli
e tenere d'occhio i commenti direttamente sul tuo PC?

Ikaro Toolbar

Potrai inoltre navigare ascoltando decine
di radio on line, accedere a centinaia
di TV in streaming
e chattare con gli altri visitatori del sito.

Per Windows 2000/XP. No spyware!

Syndacate Feed

Feedburner Technorati

Avvisami per email quando sono presenti nuovi articoli:


Contatto Contattami


Skype: ikaro.net
Email: compila il modulo


Pubblica Pubblica


Collabora

Suggerisci un tuo post o pubblica il tuo articolo. Gli articoli verranno pubblicati assieme agli altri redazionali con un link al tuo blog (continua)


Newsradar

• Ning: Crea Il Tuo Social Network Con Pochi Click

• Pochi Layout Per Movable Type 4? Prova Col Design Assistant

• Usa Il Tuo Account Google Come OpenID

• Mi Dai Il Tuo Account Digg?

• La Russia Taglia I Ponti Con Microsoft: Dal 2009 Solo Linux

• Crea Le Tue Favicon Online: Favikon

• Blogging: Layout Personalizzati In Un Istante Con Firdamatic

• Internet e Caipirinha: Ikaro Sbarca In Brasile (e Portogallo)

• Velocità ADSL: I Test Online Più Affidabili

• Una Miniera Di Conoscenza Condivisa: eDocr

Altre news •>


Creative Commons License
Ove non diversamente specificato, tutti i contenuti sono rilasciati sotto Licenza Creative Commons.

Logo
English