Articoli, news e pillole sul mondo LAMP e l'opensource. Pillole di C#
Esportazione da PHP in formato Excel
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
| Stampa l'articolo | Questo articolo è stato pubblicato da maxgrante il 6 March 2006 alle 07:48, ed è archiviato come PHP il turbo nel web. Puoi seguire i commenti a questo post attraverso RSS 2.0. Puoi pubblicare un commento o segnalare un trackback dal tuo sito. |
circa 4 anni fa
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.
circa 4 anni fa
Grazie del suggerimento!
Ciao. Max
circa 4 anni fa
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.
circa 4 anni fa
se volessi fare incontrario da fogli Xls portarlo in databse ?
circa 4 anni fa
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
circa 4 anni fa
Non mi funge…
circa 4 anni fa
Caro Gino,
dacci maggiori dettagli cosi’ da poterti aiutare.
Bye, Max
circa 3 anni fa
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.
circa 3 anni fa
Come per Gino, dacci maggiori dettagli…
Siete sicuri di settare l’header giusto? O che apache non forzi qualche tipo di codifica/mime?
circa 3 anni fa
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
circa 3 anni fa
Salve,
vorrei impostare la virgola, come separatore dei campi di un file .CSV, di default in excel 2000.
Come posso fare???
Grazie in anticipo!!!
circa 3 anni fa
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
circa 3 anni fa
Se il codice è eseguito lato client dubito che esso possa non essere visibile.
Magari mi sbaglio, ma penso sia proprio così.
Ciao. Max
circa 3 anni fa
E’ possibile, invece che esportare l’intera pagina web, esportare solo il contenuto di una data tabella che si trova all’interno della pag?
circa 3 anni fa
è possibile creare un csv da un foglio exel????
circa 1 anno fa
roba da non credere…. ha funzionato alla perfezione al primo tentativo
certo sarà semplice e con poca personalizzazione ma funziona molto bene
poi una volta messa la tabella in excell ci si può fare quello che si vuole
circa 1 anno fa
Se esporto dei dati decimali non mi fa vedere le virgole… ad esempio, invece di scrivermi 18,00 , mi scrive 18. E’ un problema di Excel e di Open Office?
circa 1 anno fa
Ciao,
penso che devi fare un replace del . con la virgola dai dati che estrai da DB perché sia excel che OO vogliono la virgola per separare i decimali.
circa 1 anno fa
Chiaro, grazie mille
circa 1 anno fa
salve io volevo sapere se era possibile invece creare un csv a runtime senza andare a scrivere nel file html….
In pratica fino ad ora scrivevo nell’header,
header(“Content-type: text/csv”);
header(“Content-Disposition: attachment; filename=\”grafico_mono.csv\”");
e poi con i miei dati andavo a scrivere il csv direttamente dividendo i campi con le virgole e andando a capo a fine stringa….
Il tutto funziona se non per il fatto che una volta che ho creato il csv devo importalo da excel altrimenti la visualizzazione è poco chiara, in questo caso invece da quanto ho capito sarebbe già formattato in tabella.
circa 1 anno fa
@milejo
Scusa ma non ho capito bene, intendi come salvare il file su file system?
Oppure come generare un XLS effettivo?
Ciao, Max
circa 1 anno fa
Ciao a tutti,
volevo sapere perchè adottando questa soluzione
il file di XLS generato rimuove gli zeri iniziali dalle colonne che contengono numeri telefonici o comunque numeri che iniziano con gli zeri .
Grazie
circa 1 anno fa
Ciao Paolo,
il problema è legato a come gestisce excel quelle colonne ovvero convertendole in numeri.
Io ho risolto con le librerie CSVtoExcel delle pear (se non sbaglio) che ti consentono di generare da un csv un excel formattando le colonne.
Dove c’era la PI o un CF le definivo come testuali.
Ciao, Max
circa 3 mesi fa
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?
Grazie
circa 3 mesi fa
Ciao Vincenzo,
in che senso in formato orizzontale?
Excel di fatto non è né orizzontale né verticale ma solo una matrice righe/colonne.
Poi per quanto riguarda la stampa quella è una faccenda inerente solo ad excel…
O mi sfugge qualcosa?
Ciao, Max