Excel Dateien mit PHP und MS-Excel Stream Handler erstellen

Im Geschäft musste ich eine kleine Web-App erstellen, die Excel-Files ausliest und in einem anderen Format wieder neue Excel-Files schreibt. Wie man Excel-Files ausliest habe ja ja bereits beschrieben, darum hier eine kleines Howto, wie man Excel-Dateien schreibt.

Von PHP selber gibt es dazu keine Funktionen, dafür aber verschiedene Klassen und Funktionen dritter. Eine recht simple Möglichkeit ist der MS-Excel Stream Handler, den man nach einer Registration gratis herunterladen kann.

Die Funktion wird über ein File eingebunden und registriert sich dann gleich selber einen neuen Filestream mit dem Namen xlsfile. Die Vorgehensweise ist recht simpel: Man erstellt sich einen zweidimensionalen Array und schreibt diesen serialisiert über den Stream in die Datei. Etwas unschön ist in meiner Meinung, dass der Array-Index gleich als erste Zeile benutzt wird.

Aber hier ein kleines Beispiel:
<?
// einen array erstellen
$data=array();

// zweite zeile definieren
// der array-index (ueberschrift1-5) wird als erste zeile verwendet
$data[]=array(
    
"ueberschrift1" =>  "zeile 2 - spalte 1",
    
"ueberschrift2" =>  "zeile 2 - spalte 2",
    
"ueberschrift3" =>  "zeile 2 - spalte 3",
    
"ueberschrift4" =>  "zeile 2 - spalte 4",
    
"ueberschrift5" =>  "zeile 2 - spalte 5");

// dritte zeile definieren
$data[]=array(
    
"ueberschrift1" =>  "zeile 3 - spalte 1",
    
"ueberschrift2" =>  "zeile 3 - spalte 2",
    
"ueberschrift3" =>  "zeile 3 - spalte 3",
    
"ueberschrift4" =>  "zeile 3 - spalte 4",
    
"ueberschrift5" =>  "zeile 3 - spalte 5");

// dateiname definieren
$filename="excel.xls";

// stream oeffnen
$fp=fOpen("xlsfile:/".$filename,"wb");

// check ob datei erstellt werden konnte (schreibrechte, korrekter pfad)
if(!is_resource($fp))
{
    die(
"konnte datei nicht erstellen");
}

// den serialisierten array schreiben
fWrite($fp,serialize($data));

// datei schliessen
fClose($fp);
?>

Das ergibt dann das folgende Erbebnis:
http://images.t-error.ch/blog/1256/excel.jpg


Der erstellen eines Excel-Files geht so sehr einfach und schnell von der Hand, dafür hat man aber keine weiteren Konfigurationsmöglichkeiten. Man kann keine weiteren Tabellenblätter hinzufügen und die erste Zeile ist immer der Arrayindex.
Ich werde auf meiner Blog demnächst eine andere Möglichkeit beschrieben, die etwas aufwändiger ist, aber auch mehr Konfigurationsmöglichkeiten bietet.