Tempo di Lettura: 2 minuti
Fin’ora ho sempre generato, da php, un foglio excel attraverso l’export di una tabella mysql in formato csv (comprensibilissimo da Excel di Microsoft o Calc di OpenOffice): il problema è che il formato csv è molto limitato in quanto permette solo di esportare i dati separandoli con una virgola e null’altro. Sarà poi compito dell’interprete associare ad ogni virgola una colonna, suddividendo così l’export in righe e colonne, proprio come un foglio excel base. Il vantaggio di csv è che oltre ad essere molto semplice da implementare (sono necessarie poche righe di codice) è anche che non è un formato proprietario e ciò escluderà i problemi di cambio di tecnologia.
Inevitabilmente, però, prima o poi, chiunque abbia a che fare con questo tipo di problemi, si scontrerà con la necessità di prevedere l’esportazione di tali dati in un formato più avanzato, permettendo, per esempio, la formattazione di testo e celle del foglio di calcolo, l’inserimento di formule, generazione di fogli multipli, e quanto altro possa essere fatto con Excel o Calc.
E’ il problema che ho dovuto affrontare anche io e quindi ho deciso di pubblicare la mia soluzione: installare la classe PEAR::Spreadsheet_Excel_Writer, una classe PEAR (acronimo di “PHP Extension and Application Repository”) che permette di generare veri e propri fogli excel senza usare COM ma puro codice PHP.
Il problema è che questa classe, per essere installara e funzionare, ha bisogno di avere installato, prima di tutto, la classe PEAR::OLE.
Attualmente la classe PEAR::Spreadsheet_Excel_Writer supporta BIFF5 format (Excel 5.0) (che penso sia più che necessario per le esigenze della maggior parte dei programmatori)
Ecco quindi i passi:
1. Dal sito https://pear.php.net/OLE il file OLE-0.5.tgz;
2. Dal sito https://pear.php.net/Spreadsheet_Excel_Writer scaricare il file Spreadsheet_Excel_Writer-0.9.1.tgz
3. Installare le due classi pear: pear install -f nomefile.tgz. Nel mio caso, usando XAMPP su Ubuntu server,
sudo /opt/lampp/bin/pear install -f OLE-0.5.tgz
install ok: channel://pear.php.net/OLE-0.5
sudo /opt/lampp/bin/pear install -f Spreadsheet_Excel_Writer-0.9.1.tgz
install ok: channel://pear.php.net/Spreadsheet_Excel_Writer-0.9.1
4. A questo punto le classi sono funzionanti e basta eseguire il seguente codice php per provare le prime funzionalità base:
< ?php
// Include PEAR::Spreadsheet_Excel_Writer
require_once "Spreadsheet/Excel/Writer.php";
// Create an instance
$xls =& new Spreadsheet_Excel_Writer();
// Send HTTP headers to tell the browser what's coming
$xls->send(“test.xls”);
// Add a worksheet to the file, returning an object to add data to
$sheet =& $xls->addWorksheet(‘Binary Count’);
// Write some numbers
for ( $i=0;$i<11;$i++ ) {
// Use PHP’s decbin() function to convert integer to binary
$sheet->write($i,0,decbin($i));
}
// Finish the spreadsheet, dumping it to the browser
$xls->close();
?>
Per avere altri esempi sull’uso di PEAR::Spreadsheet_Excel_Writer, potete leggere il tutorial di Sitepoint.com: Spreadsheets with PHP and PEAR.
Di quello che stai dicendo non funziona un bel niente mancano all’appello diverse classi !!!