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... */
// 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();
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.