Über den Author / Internet / Excel Datei per PHP erstellen

Excel Datei per PHP erstellen

~1 Min. Lesezeit

Überall im Web sieht man Tabellen oder sonstige Daten, welche man gerne per Knopfdruck exportieren möchte.

Ob Tasklisten oder Projekttermine, ein Knopfdruck auf ein Icon und Excel geht auf und zeigt die Daten an.

Das dies möglich ist, muss entweder ein spezieller Excel Generierer installiert werden, oder mit einem Trick gearbeitet werden.

Der Trick ist einfach, man generiere eine HTML-Tabelle und gebe dies als XLS aus, Excel liest das Format und konvertiert es, ohne das der Benutzer dies mitbekommt.

ls erstes müssen wir unserem Server seitigen PHP File mitteilen, das die Ausgabe als XLS erfolgen soll:

header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=Dateiname.xls");

Anschliessend holen wir die Daten:

$db = mysql_connect('localhost','username','password');
$abfrage = mysql_query("SELECT * FROM `database`.`table` WHERE `oeffentlich`='1'",$db);
if (mysql_num_rows($abfrage) >= '1')
{
	echo "<table width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">";
	while($row = mysql_fetch_assoc($abfrage))
	{
		echo "<tr>".
			"<td>".$row['id']."</td>".
			"<td>".$row['name']."</td>".
			"<td>".$row['bearbeiter']."</td>".
			"<td>".$row['status']."</td>".
		"</tr>";
	}
	echo "</table>";
}

Das PHP Generiert eine einfache HTML Tabelle, welche als „Dateiname.xls“ dem Client zugeschickt wird (trotz er eine PHP Datei aufruft im Web), welche dann gespeichert oder direkt per Excel aufgemacht werden kann.

Nachtrag 19.08.2016: Mir ist zu Ohren gekommen dass diese Methode nicht mehr funktionieren sollte wegen Sicherheitsproblemen. Bei mir geht diese jedoch noch. Es gibt aber andere Möglichkeiten, z.B. mit der PHPExcel Klasse: https://github.com/PHPOffice/PHPExcel.

About Stefan

avatar
Ein männlicher IT Nerd, durchstöbert das Web nach speziellen Gadgets, unentbehrlicher Software und Alles was man im IT Sektor nicht verpassen darf.Immer hilfsbereit wenn Probleme zu lösen sind oder das Unmögliche umgesetzt werden sollte.

Weitere interessante Artikel

PHP Trojaner (Teil 2: Uploader Infektion)

~1 Min. LesezeitPHP Trojaner sind beliebt, denn oft werden solche Infektionen übersehen und überstehen Jahre …

PHP Trojaner (Teil 1: footer.php Infektion)

~1 Min. LesezeitWieder einmal hat das anynome Web zugeschlagen und eine Installation von diversen WordPress …

7 Kommentare

  1. avatar

    Sehr guter Tipp,

    klappt sehr gut!

  2. avatar

    Das ist eine sehr gute Lösung, jedoch werden bei mir ä,ö und ü als ä,ö, und ü in excel angezeigt.

  3. avatar

    Unbedingt latin2 / UTF8 beachten, die Datei entsprechend ausgeben, dies gegebenenflls ergänzen. Sonst passiert genau dies.

  4. avatar

    das ist wirklich eine schön kurze Möglichkeit.
    hat jemand evtl auch eine Lösung wie man verhindert, dass voranstehende Nullen im Excel dargestellt werden?
    Wenn man Postleitzahlen wie z.b. 04103 hat.
    Habe es mit einem ‚ gemacht, aber dieser wird ja als Zeichen dargestellt.
    Vielleicht hat jemand eine bessere Lösung für dieses Problem

  5. avatar

    Generell wird ein ‚ nicht angezeigt, ausser du packst die Zahl auch in „“ ein.

    wert1,wert2,’zahl

    Dann wird das Zeichen nicht angezeigt.

    „wert1″,“wert2″,“‚zahl“

    Zeichen wird angezeigt. Generell sind “ nur bei Texten zu verwenden.

  6. avatar

    Eine sehr elegante Lösung! Danke.

  7. avatar
    Udo Hoffmeister

    seit dem 13.07.2016 funktioniert das nicht mehr – anscheinend war dieser Weg eine Sicherheitslücke.
    Gibt es dafür eine Lösung ? (trifft W7 bis W10)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

This Blog will give regular Commentators DoFollow Status. Implemented from IT Blögg