CSV Export in PHP

In diesem Tutorial erfährst Du, wie man in PHP mit nur 1 Klick eine CSV-Datei erzeugt, exportiert und lokal auf dem Rechner abspeichert.

Erfolgreiche Webseiten durch qualitätsvolles Webdesign
Logodesign und Grafikdesign
Digitales Marketing und Public Relations
Webdesign Referenzen
Screendesign Referenzen
Weboptimiertes Fotodesign

Erstellung CSV-Datei . Download

Das Dateiformat CSV ist eine einfache Textdatei und steht für "Comma-separated values". Das heißt, Werte werden mit einem Komma getrennt und können so in anderen Programmen (beispielsweise Office, Excel, XML, Datenbanken,...) verwendet werden.

In diesem PHP Tutorial werden die Daten durch ein Array simuliert. Normalerweise werden diese Daten und Werte aus einer Datenbank ausgelesen und in eine HTML-Tabelle eingetragen und dargestellt. Mit objektorientieren PHP ist es einfach, diese Daten mit nur 1 Klick zu exportieren und abzuspeichern.

Der Code ist kommentiert und dürfte somit selbsterklärend sein. Sollte sich dennoch Fragen ergeben, werde ich diese so rasch wie möglich beantworten.

// Beginn PHP-Code
session_start();

// Session Array setzen
if (!isset($_SESSION['daten'])) { 
	$_SESSION['daten'] = [];
}

/*
* Simuliertes Test-Array Object
* Daten kommen normalerweise aus Datenbank
*/
$daten = [
	(object)['id' => 1,
	'artikel_nr' => '001',
	'produktname' => 'Kommode',
	'preis' => 150,
	'mwst' => 20],
	
	(object)['id' => 2,
	'artikel_nr' => '002',
	'produktname' => 'Wohnzimmersofa',
	'preis' => 699,
	'mwst' => 20],
	
	(object)['id' => 3,
	'artikel_nr' => '003',
	'produktname' => 'Küchentisch',
	'preis' => 550,
	'mwst' => 20],	
	];


// Daten in Session schreiben
$_SESSION['daten'] = $daten;

/*
* Ende PHP-Code
* CSV Download
* Link: ...href="csv_export.php">CSV-Export...
*/ 
Demolink: CSV-Export
// Beginn PHP Code
session_start();

// Temporäre Datei erstellen objektorientiert
$csv = new SplTempFileObject();

foreach($_SESSION['daten'] as $spalte) {
	
	// Object extrahieren
	$spalte = get_object_vars($spalte);
	
	// Umlaute für Excel konvertieren
	$spalte = mb_convert_encoding($spalte, "UTF-16LE", "UTF-8");
   
	// CSV erstellen
	$csv->fputcsv($spalte);
}

// Zeiger auf Anfang setzen
$csv->rewind();

// Headerinfo für Ausgabe
header("Content-Type: text/csv");
header('Content-Disposition: attachment; filename="daten.csv"');

// CSV ausgeben
$csv->fpassthru();