25.13. Wie erzeuge ich Excel-Dateien mit PHP?Antwort von Johannes Frömter"Richtige" Excel-Dateien lassen sich kaum erzeugen, da .xls ein binäres, undokumentiertes proprietäres Microsoft-Format ist, das zudem von Version zu Version verändert wird. Stattdessen kann man aber Textdateien erzeugen, deren Werte (Spalten) mit Tabulatoren und deren Zeilen mit CRLF (\r\n) getrennt sind, und diese Excel als .xls-Datei "unterschieben". Wichtig ist hierbei, als Dateityp tatsächlich eine Excel-(.xls)-Datei zu deklarieren - obwohl Excel diverse Importformate wie .csv (comma separated value) kennt, funktioniert es damit, vermutlich mangels definiertem Content-Type, nicht wie gewünscht. header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: inline; filename=\"excel.xls\""); readfile($filename); // Datei 1:1 durchreichen // echo "Titel (A1)\r\nA2\tB2\r\nA3\tB3"; // ODER mit PHP erzeugen Anmerkung: Trotz der Angabe inline bietet der Browser i.d.R. einen Dialog an, der das direkte Öffnen oder aber das Speichern der Datei ermöglicht. Die Angabe attachment dagegen führte zu kuriosen, nicht brauchbaren Ergebnissen... Ein gänzlich anderer Weg, Excel-Dateien zu erzeugen, führt über die COM-Funktionen von PHP4. Damit kann man eine Excel-Instanz direkt ansteuern und so u.a. eine echte .xls-Datei generieren. Wer das ausprobieren will, der lese diesen Artikel und besorge sich die Excel Class von Alain Samoun. Wer auch auf Unix-Systemen echte Excel-Dateien erstellen will, sollte sich die Klasse Biff von Christian Novak ansehen. Hiermit ist es möglich direkt das binäre Excel-Format zu schreiben. Verschiedene Schriftformatierungen, sowie Zellenformatierungen, Kommentare und sogar Kopf- und Fusszeile werden unterstützt. Im PEAR-Projekt entsteht eine Klasse zum Erzeugen von Excel-Dokumenten. Sie steht unter PEAR::Package::Spreadsheet_Excel_Writer zum Download verfügbar. |
||
25.13. Wie erzeuge ich Excel-Dateien mit PHP? http://www.php-faq.de/q/q-code-excel.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |