da PHP a Excel con PHPExcel

 

Ciao, in questo articolo analizzo del codice che ho usato io per stampare un documento .ods (Excel, Calc) da php, con dati presi dal database. So che può essere complicato all’inizio, per questo analizzerò il codice passo passo (in fondo c’è lo script completo).
Per utilizzare PHPExcel è NECESSARIO installare l’estensione ZIP per PHP. E’ quindi necessario poter accedere al proprio Server. In alternativa (come nel mio caso) provate a chiedere al vostro host di installarlo per voi. A me l’hanno fatto senza problemi (Aruba). Una volta fatto questo potete scaricare la libreria da QUI e caricarla sul server.
Aggiungo che questo script funziona senza problemi con utf-8 (caratteri speciali, accenti ecc).
Partiamo!

– Estrazione dati dal database
$count è usata per sapere quante righe ha estratto dal db e quindi quante stamparne. usata più avanti, nel loop

– Imposta il timezone per il documento

– Includiamo la classe PHPExcel (percorso in base a dove lo abbiamo messo sul server)

– Creiamo un nuovo oggetto PHPExcel e impostiamo le proprietà del documento

– Titoli (prima riga) in grassetto

– I titoli delle colonne

– Impostiamo la larghezza delle colonne (definendo un array si evita di scriverli uno per volta)

– Impostiamo il colore di background delle celle dei titoli

– E il background per le celle dei dati (io l’ho fatto in modo che le righe abbiano colori alternati)

– Inseriamo i dati nelle rispettive celle. Anche qui $i = 3 perchè così saltiamo le prime 2 righe

– Nome del documento

– Impostiamo l’indice al primo documento (così quando lo apriamo verrà aperta direttamente la prima pagina)

– Header per il browser

– Scriviamo il nostro oggetto nel documento

– Eliminiamo tutto l’eventuale output prima del documento. per evitare l’errore Headers: output sent before.. (NB è una soluzione non definitiva, è molto meglio assicurarsi che non ci sia nulla che viene stampato, ad esempio echo, print o codice html)

– Per il download automatico del documento

——————————————————————————————

Codice completo