Creare e scaricare file CSV in PHP

Mattepuffo's logo
Creare e scaricare file CSV in PHP

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!


Condividi

1 Commenti

  • Roberto

    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

Commentami!