Home Scripting PHP-MySQL PHP-MySQL - Creare un file MS Excel
26 | 05 | 2012
Menu Principale
Informatica e Web
Racconti
Articoli correlati
PHP-MySQL - Creare un file MS Excel PDF Stampa E-mail
Votazione Utente: / 0
ScarsoOttimo 
Script utili - PHP - MySql
Scritto da Samyorn   

Creare un file MS-Excel dal Web tutto sommato, provando e riprovando i vari script trovati in giro, alla fine non è una cosa così difficile….anzi!!!!!

Vi riporto la mia esperienza personale e quello che per me è il modo più semplice di prelevare dei dati da un Db MySQL e creare un foglio excel che li contenga.

 

Immaginiamo di avere una tabella utenti che contenga il nome, cognome e indirizzo e-mail degli stessi e che ci serva estrarre questi dati in un foglio excel.

Per prima cosa dobbiamo creare uno script che invece di generare un normale output, ci faccia scaricare il file creato. E questo è possibile utilizzando gli header, specificando prima il Content type e poi che la risorsa sarà una inline.

Come vedrete il tutto si risolverà nella creazione di una tabella (che vi aspettavate? :D ve lo avevo detto che era cosa semplice no? :P )

<?php
include "config.php"; // includo il file di connessione al Db
$filename="export.xls"; // nome del file che creeremo
header ("Content-Type: application/vnd.ms-excel"); // specifichiamo il Content-Type
header ("Content-Disposition: inline; filename=$filename"); // specifichiamo la risorsa
?>
<!–- iniziamo a costruire la nostra tabella -->
<html><head><title>Export</title></head><body>
<table border="1″>
<tr>
<th>Nome</th>
<th>Cognome</th>
<th>E-mail</th>
</tr>
<?
$sql="SELECT * FROM utenti ORDER BY nome"; // selezioniamo i dati dalla nostra tabella
$query=@mysql_query($sql) or die (mysql_error());
while ($row=mysql_fetch_array($query)) // ed effettuiamo un ciclo per creare le righe della nostra tabella
{
$nome=$row['nome'];
$cognome=$row['cognome'];
$mail=$row['email'];
?>
<tr>
<td><? echo $nome; ?></td>
<td><? echo $cognome; ?></td>
<td><? echo $mail; ?></td>
</tr>
<?
}
?>
</table>
</body>
</html>
<?
@mysql_close($connessione);
?>

Che ci crediate o meno è fatta :D

Scaricatevi lo script da quì

Eseguendo lo script il Vs. browser vi chiederà di aprire o scaricare il file export.xls, mi raccomando, scaricatelo in locale per poterlo sfruttare al meglio, senno’ avrete una visualizzazione html del file excel appena creato ;)

Come ultima chicca vi aggiungo che potete formattare i vari campi e valori visualizzati per come più vi piace :D

Potreste associare anche un CSS, volendo, per gestire bordi, colori e quant’altro, e per formattare i campi utilizzare la funzione di formattazione di PHP più adatta alle vostre esigenze ;)

 
Comments (10)
bella!
1 Mercoledì 29 Aprile 2009 01:40
GRANDEEEE! mi sei stato di grande aiuto,thank y so much!
2 Martedì 07 Luglio 2009 09:04
E se vuoi mettere delle immagini come fai? Se metti i riferimenti a immagini che stanno per esempio in una cartella condivisa sulla rete quando esporti il file lui mette dei link a queste immagini e le vedi finchè sei sotto la stessa reta,ma se mandi il file ad un esterno non le vede, hai soluzioni in merito?
Martedì 07 Luglio 2009 20:23
Samyorn
Ciao Stefania.
Le possibilità sarebbero due (per quanto mi viene in mente al momento), una indolore e l'altra un po' più complessa:

L'indolore: mettere le immagini online su qualche sito o image hosting e linkarle esattamente come fai per una cartella condivisa. Chi visualizzerà il file dovrà ovviamente essere connesso ad internet, attenderà pochi secondi a file aperto (il tempo che vengono scaricate, immagino siano file di pochi kb).
Creare un pacchetto zippato che contenga il file .xls ed una cartella che contenga le immagini. Dal file ovviamente, a questo punto, basterà linkare l'immagine con cartella/immagine.ext

Il secondo metodo ovviamente richiede una revisione totale dello script e che siano caricate le librerie come gzip (per portare un esempio) così da poter creare online il pacchetto zippato.
Prendi tutto questo come linea teorica , non mi è mai capitato ad esser sincero, pertanto, salvo che mi sfugga qualcosa di più indolore, in teoria le soluzioni possibili son queste.
3 Giovedì 05 Novembre 2009 18:58
se devo scrivere i dati nello stesso file di excel ma su due fogli diversi????
grazie
Giovedì 05 Novembre 2009 20:30
Samyorn
Salve Enrico, effettivamente  non mi è mai capitato di dover creare più fogli in uno stesso file. Ho dato un'occhiata in giro velocemente e non ho trovato nulla sull'argomento.
Potresti provare a creare due table e vedere se le accoda o "magari" le riconosce come entità diverse e quindi creerà due fogli. ;)
4 Giovedì 05 Novembre 2009 20:47
Grazie per la tempestiva collaborazione, avevo già provato il sistema di un'altra tabella, ma viene accodata. Secondo te come posso utilizzare più header in modo da gestire due file?
 
grazie
 
Giovedì 05 Novembre 2009 22:02
Samyorn
A Download effettuato del primo file potresti far rieseguire lo script con le nuove impostazioni per farti scaricare l'altro, contemporaneamente, a che io sappia, non è fattibile inviare più file. :)
5 Giovedì 05 Novembre 2009 23:25
ti ringrazio. Di seguito il mio script prima della modifica. Se vuoi puoi utilizzarlo o cestinarlo.
ciao
 
Disegno,0,3); if ($R $wsR) { $R=$wsR; if ($riga>1) echo " ";?>Codeandinfo1info2info3aabbccddeeffgghhiiDisegno; ?>   a1; ?>a2; ?>a3; ?>a4; ?>a5; ?>
Venerdì 06 Novembre 2009 21:22
Samyorn
Grazie per il tuo script Enrico, solo che mi sa non venga preso bene, ho limitato un po' gli inserimenti per sicurezza, se vuoi, così posso pubblicarlo (magari può tornare utile ad altri ;) ) puoi mandarmelo via mail a Questo indirizzo e-mail è protetto dallo spam bot. Abilita Javascript per vederlo.
;)
Più tardi
6 Domenica 08 Novembre 2009 15:38
Scusa ma ho già fatto la messa in linea, appena ho tempo riduco lo script e lo mando in e-mail.
 
grazie
a più tardi
 
7 Giovedì 20 Maggio 2010 21:42
Salve, ho provato lo script e funziona alla grande, ma se quando esporto in formato excel volessi che la pagina sia orientata in modo orizzontale, come posso fare?
Chiedo questo perchè ho necessità che nella stampa la pagina deve essere stampata in orizzontale automaticamente, senza mettere le mani alle impostazioni di stampa.
Grazie
non funziona
8 Lunedì 14 Novembre 2011 14:45
a me  non funziona
 
da  un errore  di excell all'apertura e il file  è vuoto .
Grande!
9 Martedì 03 Gennaio 2012 17:31
Sei un grande!! Script favoloso, mi ha salvato la vita!
10 Venerdì 04 Maggio 2012 08:46
ottimo script, ma la parte che riguarda la formattazione dove la leggo? dovrei riuscire a creare un file di excel dove ogni riga è colorata diversamente in base ad uno specifico valore di un campo del db. grazie!

Add your comment

Your name:
Your email:
Your website:
Titolo:
Comment:
  The word for verification. Lowercase letters only with no spaces.
Word verification:
Chi è online
 1 visitatore online
Statistiche
Hits visite contenuto : 21904
Ultimi commenti, category: "PHP - MySql"
Link consigliati
Banner