Mar 06 2006

Esportazione da PHP in formato Excel

Published by maxgrante at 07:48 under PHP il turbo nel web

Ciao a tutti,
oggi vediamo come creare facilmente un foglio excel / calc di Openoffice mediante l’utilizzo di php.
Per farlo senza alcuna difficolta sfruttiamo la capacità  di Excel di leggere file HTML.

In sostanza tutto quello che dobbiamo fare è creare una semplice tabella HTML di 2 righe e quante colonne ci servono, la prima indica il contenuto del campo, la seconda riga la usiamo per farla ciclare con i dati estratti da php.

Una volta ottenuta in HTML la tabella con i dati desiderati basta semplicemente anteporre al nostro script le seguenti righe PHP:

< ?php
$nomefile=$_GET['nomefile']".xls";
header ("Content-Type: application/vnd.ms-excel");
header ("Content-Disposition: inline; filename=$nomefile");
?>

In sostanza basta passare per comodità  al nostro script il nome del file, ad esempio:
http://www.miosito.com/export-excel.php?nomefile=esportazione

A questo punto automaticamente ci verrà  proposto dal browser di salvare un file di nome esportazione.xls con i dati contenuti all’interno della tabella HTML precedentemente visualizzata.

Strano ma vero… è tutto qui…
Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com

16 Responses to “Esportazione da PHP in formato Excel”

  1. Truijlloon 06 Mar 2006 at 10:13

    Metodo alternativo:
    creare un file di testo con estensione .xls e creare le colonne intervallando i valori col carattere TAB come nell’esempio sottostante…

    “valore1″\t”valore2″\t”valore3″
    “valore1″\t”valore2″\t”valore3″
    “valore1″\t”valore2″\t”valore3″

    questo e’ il formato standard dei file CSV che excel interpreta come file suoi se vede l’estensione xls.

  2. maxgranteon 06 Mar 2006 at 10:17

    Grazie del suggerimento!

    Ciao. Max

  3. Ludovicoon 06 Mar 2006 at 10:59

    C’è un pacchetto di pear che ho usato per l’esportazione dei dati i formato Excel: http://pear.php.net/package/Spreadsheet_Excel_Writer

    Lo consiglio caldamente a chiunque abbia bisogno di funzioni avanzate nella generazione dei file, infatti grazie al suddetto pacchetto è possibile impostare qualsiasi aspetto del foglio di lavoro, formattazione, fogli multipli, ecc.

    Dall’homepage:

    Spreadsheet_Excel_Writer was born as a porting of the Spreadsheet::WriteExcel Perl module to php.
    It allows writing of Excel spreadsheets without the need for COM objects.
    It supports formulas, images (BMP) and all kinds of formatting for text and cells.
    It currently supports the BIFF5 format (Excel 5.0), so functionality appeared in the latest Excel versions is not yet available.

  4. Giancarloon 06 Mar 2006 at 11:48

    se volessi fare incontrario da fogli Xls portarlo in databse ?

  5. maxgranteon 06 Mar 2006 at 11:50

    In questo caso dovresti salvare in CSV e importare per esempio da Phpmyadmin che lo prevede già .
    Altrimenti devi farti un parser che prende i dati e li mette a DB.

    Ciao. Max

  6. [...] Esportazione da php in formato Excel [...]

  7. Ginoon 12 Ago 2006 at 08:40

    Non mi funge… :(

  8. maxgranteon 28 Ago 2006 at 14:36

    Caro Gino,
    dacci maggiori dettagli cosi’ da poterti aiutare.

    Bye, Max

  9. gaiaon 06 Ott 2006 at 15:59

    buongiorno a tutti
    mi trovo di fronte allo stesso problema di gino.
    premetto che lavoro su win xp con excel versione 2000 e forse e’ questo il problema…
    ho installato pear e ho scaricato il pacchetto. provo a lanciare il codice php suggerito nella documentazione. la pagina php non genera errori e il file excel viene creato ma al suo interno vedo, oltre al testo che ho chiesto di scrivere, tutta una serie di caratteri “tipo quadratini”.
    devo rinunciare o c’e’ speranza?
    grazie.
    n.

  10. maxgranteon 06 Ott 2006 at 20:55

    Come per Gino, dacci maggiori dettagli…

    Siete sicuri di settare l’header giusto? O che apache non forzi qualche tipo di codifica/mime?

  11. vreron 13 Ott 2006 at 13:59

    Salve a tutti.. ho provato a far funzionare il writer ma non riesco a capire come mai non mi va…

    Dando un’occhiata al codice del file writer.php ho visto che include dei file che perà hanno un percorso sbagliato…
    Uno di questi file poi include dei file che nel pacchetto che ho scaricato non ci sono: tipo
    require_once ‘OLE/PPS/File.php’;

    Devo scaricare altre cose? devo installare il acchetto in un modo particolare?
    Devo aver saltato qualche passaggio.. qualcuno mi puà aiutare?
    Grazie mille :)

  12. den87on 16 Nov 2006 at 12:02

    Salve,
    vorrei impostare la virgola, come separatore dei campi di un file .CSV, di default in excel 2000.
    Come posso fare???
    Grazie in anticipo!!!

  13. Salveon 31 Gen 2007 at 18:49

    Sono un programmatore esperto e volevo sapere se sapete come fare per esportare un file excel in formato binario usando ajax pero che usi vbscript come codice client e’ che il codice non sia visibile lato client

  14. maxgranteon 31 Gen 2007 at 19:01

    Se il codice è eseguito lato client dubito che esso possa non essere visibile.
    Magari mi sbaglio, ma penso sia proprio così.

    Ciao. Max

  15. GaBon 23 Giu 2007 at 11:43

    E’ possibile, invece che esportare l’intera pagina web, esportare solo il contenuto di una data tabella che si trova all’interno della pag?

  16. andreaon 27 Ago 2007 at 12:48

    è possibile creare un csv da un foglio exel????

Trackback URI | Comments RSS

Leave a Reply