Un file CSV è in un semplice file di testo formattato secondo determinate regole e compatibile con i principali programmi per la gestione di fogli elettronici come Excel, Calc (il foglio di calcolo di open Office) o Google Sheet.
CSV è la sigla di comma-separated values, cioè valori separati da virgola, ed è una tipologia di file che si usa per esportare o importare dati da una base di dati all’altra, questa non è la sua unica funzione ma la più coumune.
Anche se comma in inglese significa virgola, spesso le informazioni sono separate da punto e virgola, per il nostro esempio useremo il file dell’ISTAT sulle ripartizione regioni/province.
Il file è scaricabile da questo link
Riporto qui le prime 5 colonne delle 2 righe del file:
Codice ripartizione;Codice NUTS1 2006;Codice NUTS1 2010;"Ripartizione geografica (Maiuscolo)";Ripartizione geografica;
1;ITC;ITC;NORD-OVEST;Nord-ovest;1;
Come si può vedere nella prima linea sono contenute le intestazoni, nella seconda i valori, separati da punto e virgola e non da virgola.
Il simbolo che separa i valori è il “delimitatore” e è molto importante nella realizzaizione del nostro codice.
Quello che volgiamo fare è prendere una riga alla volta e impaginare i valori in una tabella HTML.
Per prima cosa assicuriamoci da avere il file CSV e il file PHP che chiameremo csv2table.php siano nella stessa cartella.
Cominciamo a digitare il seguente codice
//definiamo il delimitatore
$delimitatore = ';';
//apriamo il file in lettura e ci posizioniamo sulla prima riga
$file = fopen('ripartizioni_regioni_province.csv','r');
//stampiamo il tag di apertura della tabella
echo "<table-->";
// qui inseriremo il ciclo sui dati del file csv
//stampiamo il tag di chiusra della tabella
echo "";
In pratica abbiamo definito il delimitatore e abbiamo aperto il file in lettura, poi abbiamo posizionato i 2 tag (apertura e chiusura) della tabella, tra questi due tag scriverermo il codice che prenderà di volta in volta una riga del file csv e produrrà una riga della tabella HTML.
Utilizzeremo la funzione php fgetcsv che rende una riga dal file precedentemente aperto e l’analizza in cerca di campi CSV, restituendo un array che contiene una cella per ogni campo.
Ecco il codice completo e funzionante.
//definiamo il delimitatore
$delimitatore = ';';
//apriamo il file in lettura e ci posizioniamo sulla prima riga
$file = fopen('ripartizioni_regioni_province.csv','r');
//stampiamo il tag di apertura della tabella
echo "<table>";
// qui inseriremo il ciclo sui dati del file csv
while (($linea = fgetcsv($file, 1000, $delimitatore)) !== false) {
//leggo una linea alla volta del file csv
//e la inserisco in una riga nella tabella HTML
echo "<tr>";
foreach( $linea as $campo) echo "<td>".$campo."</td>";
echo "<tr>";
}
//stampiamo il tag di chiusra della tabella
echo "</table>";
//chiudo il file
fclose($file);