PDA

View Full Version : [PHP] esportare file excel: come?


Necromachine
16-06-2009, 16:48
Buongiorno a tutti :) .

Mi trovo nella tipica situazione di dover esportare dei dati da un database MySQL ad un file Excel, usando un server PHP.
I requisiti che ho sono:

esportare in formato binario excel (BIFF8);
i dati da esportare sono in UTF-8;


Al momento non ho ancora trovato una classe valida che esporti correttamente in UTF-8 e in formato nativo excel :( ... qualche suggerimento?

Ikari80
17-06-2009, 09:27
Excel, fortunatamente riconosce il codice html.
Quindi non devi far altro che generare un file con estensione .xls al cui interno ci saranno i tuoi dati incasellati in una tabella html.

Esempio:

$filename= "test.xls";

//Creo il file excel
$file = fopen("C://".$filename, "w");

// Scrivo i dati nel file
fwrite($file, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
fwrite($file, "<html lang=it><head>\r\n");
//Titolo del foglio xls
fwrite($file, "<title>TEST XLS</title></head>\r\n");
//dati incasellati
fwrite($file, "<body>\r\n");
fwrite($file, "<table border=\"1\">\r\n");
fwrite($file, "<tr><td>TEST</td></tr>");
fwrite($file, "</table>\r\n");
fwrite($file, "</body></html>\r\n");

// Chiudo il file
fclose($file);


Spero di esserti stato di aiuto:)

les2
17-06-2009, 13:22
ciao, non so se posso psotarla direttamente,
io per praticità (quotando il messaggio precedente),
mi sono appoggiato alla classe di Oliver Schwarz...
la trovi in rete.
ciao;)

Necromachine
17-06-2009, 14:27
Grazie degli interventi.
Per Ikari80, al momento utilizzo proprio quel metodo, però non va bene per alcuni motivi (excel legge il "finto xls" in html, ma al momento di editarlo non riesce a gestirlo come file unico; inutile spiegare a dei clienti che hanno problemi a spedire una email come convertire formati :p ).
Per questo ho bisogno di una classa che faccia l'export in binario, cosicchè excel lo possa gestire direttamente senza problemi.
Ho provato ad esempio la "write_excel", ma non riesco a esportare file con l'UTF-8 (ad esempio una cella in cui inserisco l'arabo o il giapponese con una stringa utf-8 si trasforma magicamente in una serie di punti di domanda una volta esportato e io ho bisogno di esportare in multilingua :( ).

A les2: grazie per la segnalazione, ho provato a guardare un attimino la classe, e non sembra male, mi rimane l'incognita dell'UTF-8 ... appena avrò tempo farò delle prove.

P.S. : per caso c'è modo anche di esportare dei grafici direttamente nel file .xls? (non l'immagine di un grafico, proprio il grafico dentro il foglio elettronico costruito coi dati delle celle).
Siccome devo esportare reportistica varia, sarebbe una cosa carina :) .