Creare e scaricare file CSV in PHP
Oggi vi presento una piccola funzioncina che ci permette di creare un file CSV al volo e metterlo in download usando PHP.
Non useremo librerie di terze parti, ma le funzioni standard:
- fopen
- fputcsv
- fseek
- fpassthru
Ecco la funzione:
function downloadCsv($array, $filename = "export.csv", $delimiter = ";") {
$f = fopen('php://memory', 'w');
foreach ($array as $line) {
fputcsv($f, $line, $delimiter);
}
fseek($f, 0);
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
fpassthru($f);
}
L'array deve essere un array multidimensionale, tipico di una query eseguita su database.
Enjoy!
php csv fopen fputcsv fseek fpassthru
1 Commenti
sto tentando di scaricare un file csv ricavato da una tabella mysql. Per farlo estraggo i dati su una variabile ($output). Una volta completata la variabile $output implemento una vacrabile $filename, che contiene i nome del file da scaricare La variabile $output non ha spazi o altro al suo inizio. lancio i comandi di scarico del file -- header('Content-type: application/csv'); header('Content-Disposition: attachment; filename='.$filename); echo $output; exit; -- Il file si scarica regolarmente ma, stranamente, contiene al suo inizio due comandi newline e non riesco a capire come ci sono attivati I due file new line fanno si che il contenuto del file, all'interno di file excel, inizino nella riga n. 3 e questo non è pratico. Grazie a chi vorrà darmi una mano a capire
08/05/2021