Il parsing di un file Excel con PHP è una pratica comune in molti contesti di sviluppo web, come la gestione di dati aziendali o l'integrazione con altri sistemi. In questo articolo vedremo come effettuare il parsing di un file Excel in PHP utilizzando la libreria PhpSpreadsheet di PHP, che è l'evoluzione della precedente libreria PHPExcel. PhpSpreadsheet è una libreria potente e flessibile che permette di leggere e scrivere file Excel (.xlsx, .xls) in modo semplice.
Con Composer possiamo aggiungere PhpSpreadsheet al nostro progetto eseguendo il seguente comando nella root del progetto:
composer require phpoffice/phpspreadsheet
Ora che abbiamo installato la libreria, vediamo come leggere un file Excel (.xlsx). Per semplicità, immaginiamo di avere un file Excel chiamato data.xlsx
con la seguente struttura:
Firstname | Lastname | Age |
---|---|---|
Mario | Rossi | 25 |
Luigi | Bianchi | 30 |
Anna | Verdi | 28 |
Vogliamo leggere i dati presenti in questo file ed elaborarli all'interno di un'applicazione PHP.
require 'vendor/autoload.php'; // Autoload di Composer per includere PhpSpreadsheet
use PhpOffice\PhpSpreadsheet\IOFactory; // Importiamo la classe IOFactory
// Specifica il percorso del file Excel
$inputFileName = 'data.xlsx';
try {
// Carica il file Excel
$spreadsheet = IOFactory::load($inputFileName);
// Seleziona il foglio di lavoro attivo
$sheet = $spreadsheet->getActiveSheet();
// Ottieni i dati come un array
$data = $sheet->toArray();
// Itera sui dati e stampa ogni riga
foreach ($data as $row) {
echo "Nome: " . $row[0] . " - Cognome: " . $row[1] . " - Età: " . $row[2] . "\n";
}
} catch (\PhpOffice\PhpSpreadsheet\Reader\Exception $e) {
// Gestione degli errori
echo 'Errore durante il caricamento del file: ', $e->,getMessage();
}
Spiegazione del codice:
- Inclusione della libreria PhpSpreadsheet: Utilizziamo
require 'vendor/autoload.php'
per caricare automaticamente tutte le classi di PhpSpreadsheet tramite Composer. - Caricamento del file:
IOFactory::load($inputFileName)
apre il file Excel specificato e lo carica in memoria. - Selezione del foglio di lavoro: La funzione
getActiveSheet()
ottiene il foglio attivo (quello visualizzato per primo quando si apre il file). - Conversione in array:
toArray()
converte i dati presenti nel foglio Excel in un array PHP, in modo da poterli processare facilmente. Ogni riga dell'Excel corrisponde a un array associativo o indicizzato. - Iterazione sui dati: Il ciclo
foreach
scorre ogni riga dell'Excel e stampa i dati, in questo caso il nome, cognome ed età.
La funzione toArray()
è utile per la lettura di fogli di calcolo semplici, ma PhpSpreadsheet offre molte altre funzionalità avanzate, come:
Lettura di fogli multipli: Se il file Excel contiene più fogli di lavoro, possiamo selezionare un foglio specifico usando il metodo
getSheetByName()
oppuregetSheet()
con un indice numerico.Lettura di celle specifiche: Se desideriamo leggere il valore di una cella specifica, possiamo usare
$sheet->getCell('A1')->getValue()
Gestione di formati complessi: PhpSpreadsheet supporta celle con formattazione complessa, come celle unite, stili personalizzati, formule e altro.
Ecco come possiamo leggere dati da più fogli:
$sheetNames = $spreadsheet->getSheetNames();
foreach ($sheetNames as $sheetName) {
$sheet = $spreadsheet->getSheetByName($sheetName);
$data = $sheet->toArray();
foreach ($data as $row) {
echo implode(' - ', $row) . "\n";
}
}
Conclusione
In questo articolo abbiamo visto come effettuare il parsing di un file Excel con PHP utilizzando la libreria PhpSpreadsheet. Questa libreria offre una vasta gamma di funzionalità per lavorare con i file Excel, permettendo di leggere e scrivere dati in modo efficiente. PhpSpreadsheet è lo strumento ideale per chiunque debba manipolare file Excel in applicazioni PHP, sia per progetti semplici che complessi.