Parsing di un file Excel con PHP

Parsing di un file Excel con PHP

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:

FirstnameLastnameAge
MarioRossi25
LuigiBianchi30
AnnaVerdi28

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:

  1. Lettura di fogli multipli: Se il file Excel contiene più fogli di lavoro, possiamo selezionare un foglio specifico usando il metodo getSheetByName() oppure getSheet() con un indice numerico.

  2. Lettura di celle specifiche: Se desideriamo leggere il valore di una cella specifica, possiamo usare $sheet->getCell('A1')->getValue()

  3. 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.

Torna su