Automatisierte Dokumentenerstellung mit PHPExcel

Erstklassig
Kommentare

Auch in der perfekten Anwendung, die alle Anforderungen der damit arbeitenden Nutzergruppe abdeckt, wird irgendwann die Frage nach einem Export laut. Auf der einen Seite gibt es Empfänger, die keinen Zugriff auf die Applikation erhalten, z. B. andere Abteilungen aus dem gleichen Unternehmen oder aber externe Gruppen wie Kunden oder Lieferanten.

Auf der anderen Seite sollen Dokumente, etwa ein Anschreiben, erstellt und dann manuell nachbearbeitet werden. Dabei sollen die Prozesse möglichst automatisiert erfolgen, um effizient zu sein und eine fehleranfällige, manuelle Nachbearbeitung zu reduzieren oder komplett auszuschließen. Es fängt meistens mit der simplen Ausgabe einer Liste an. Das Spektrum des gewünschten Exports ist dabei breit: Fast überall sind Kunden, Kontakte, Projekte, Aufgaben oder Konfigurationseinstellungen anzutreffen, die ausgegeben werden sollen. Sind etwa im Fall eines direkten Imports in eine Drittapplikation keine Formatierungen gewünscht, so ist die CSV-Datei immer noch die erste Wahl. Sie lässt sich einfach erstellen und direkt mit MS Excel öffnen. Doch häufig geht es neben den Daten zusätzlich um eine konkrete Formatierung. Damit das Ergebnisdokument den Vorstellungen entspricht, muss in solchen Fällen eine andere Lösung her. Für diese Anforderungen existieren neben Spreadsheet::WriteExcel (basiert auf Perl) andere Ansätze wie der Spreadsheet_Excel_Writer aus dem PEAR-Projekt. Das ist aber nach eigenen Angaben veraltet und bedarf einer Überarbeitung. Auch nicht zu vernachlässigen ist, dass bei Nutzung des Spreadsheet_Excel_Writer selbst einfache Formatierungen den Quellcode schnell anwachsen lassen. Änderungswünsche gehen dann dem Programmierer schnell auf die Nerven. Die Klasse samounexcel geht einen anderen Weg und nutzt die COM-Funktionen. Das setzt aber einen Windows-Server mit installiertem MS Excel voraus. Muss man nicht nur die Formatierung berücksichtigen, sondern außerdem die Anwendung auf Linux- und Windows-Server betreiben, wird die Auswahl aber eng. Und hier kommt PHPExcel mit den Schwesterprojekten PHPWord und PHPPowerPoint ins Spiel. Die drei Klassen sind Open-Source-Lösungen und stehen alle unter der GNU Library Public License, Version 2, zur Verfügung. Obwohl die Klassen viele Ähnlichkeiten in Methodenaufrufen – und Attributen haben, sind sie absolut autark. Auf diese Weise lassen sie sich sowohl einzeln als auch im Klassenverbund in eigene Anwendungen integrieren. Nachfolgend werden die herausragenden Leistungen erläutert, durch die sich die drei Klassen ihr Sternchen verdient haben:
  • PHPExcel liest und schreibt aus PHP heraus Microsoft-Excel-2007-Dateien inklusive Office-Metadaten wie Autor, Titel und Beschreibung; unterstützt eingebettete Bilder und diverse Formatierungen; speichert Daten auch im Format von Excel 97 bis 2003 und als PDF und kann direkt HTML ausgeben (Abb. 1).
  • PHPWord erstellt Word-2007-Dokumente inklusive Office-Metadaten wie Autor, Titel und Beschreibung, beinhaltet diverse Schriften und Schriftformatierungen, ermöglicht die Gestaltung der Kopf- und Fußzeile, das Einfügen eines Inhaltsverzeichnisses sowie von Bildern und OLE-Objekten und unterstützt ein einfaches Vorlagensystem für die automatisierte Erstellung von Anschreiben und anderen Dokumenten.
  • PHPPowerpoint erstellt PowerPoint-2007-Dokumente inklusive Office-Metadaten wie Autor, Titel und Beschreibung; umfasst diverse Schriften und Schriftformatierungen, erlaubt die Gestaltung der Druckausgabe sowie das Einfügen von Bildern mit Positionsangaben, Drehung und Schatten.
Abb. 1: PHPExcel unterstützt unterschiedliche Formatierungen und das Einfügen von Bildern

Abb. 1: PHPExcel unterstützt unterschiedliche Formatierungen und das Einfügen von Bildern

In diesem Artikel beginnen wir mit PHPExcel, um die Funktionsweise dieser Klasse kennenzulernen, und werden nachfolgend ein praxisnahes Beispiel benutzen. In einer CRM-Anwendung ist für die Kommunikation im Kundengespräch eine Darstellung der Umsatzzahlen im Vergleich zwischen dem aktuellen und dem letzten Jahr gewünscht. In einer Tabelle soll leicht verständlich der Verlauf der Monate im Vergleich zum Vorjahr dargestellt werden. Weiter mit: Teil 2 Alle Teile: Teil 1, Teil 2, Teil 3
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -