© VectorKnight/Shutterstock.com
PHP Magazin
Drei Wege, ein Word-Dokument mit PHPWord zu erstellen

Alles andere als eine Textwüste

Ein Word-Dokument in PHP zu erstellen klingt zunächst einmal nach einer großen Tüftelarbeit, die viel Zeit beansprucht. Anwendungsmöglichkeiten gibt es einige, und so lohnt es sich, gleich mehrere Möglichkeiten auszuprobieren, um diese Aufgabe vernünftig zu lösen. Und wir werden sehen: Es ist doch einfacher als man denkt.

Maria Haubner


Ein Word-Dokument in PHP zu erstellen, kann eine ganz schöne Herausforderung werden. Microsoft Word bietet eine Vielzahl an Optionen und Einstellungen, und die möchte man natürlich auch nutzen, um ein zufriedenstellendes Ergebnis zu erhalten. Vielleicht ist man ja in der Situation, Dokumente für einen Geschäftskunden erstellen zu müssen, der nur Word kennt, aber keine Ahnung von den Einschränkungen in PHP hat. Da kann es natürlich passieren, dass der Kunde unzufrieden ist, wenn etwas auf einmal nicht machbar ist.

In diesem Artikel werden wir uns PHPWord etwas genauer anschauen und drei verschiedene Wege zeigen, mit denen man Word-Dokumente erstellen kann: grundlegendes einfaches Templating, die Erstellung von Dokumenten komplett in PHP und – um ein bisschen verrückt zu werden und die Sache auf die Spitze zu treiben – die Kombination von beidem. Nach der Lektüre sollte man auf jeden Fall eine Idee davon haben, wie man sich am besten seinen persönlichen Word-Creator gestalten könnte.

PHPWord

PHPWord ist Teil der PHPOffice-Bibliothek [1], die es erlaubt, Dokumente in verschiedenen Dateiformaten komplett in PHP zu lesen und zu schreiben. Die unterstützten Formate sind HTML, ODText, PDF, RTF und Word 2007, das wir uns genauer anschauen werden. PHPWord ist aktuell in Version 0.14 auf GitHub [2] verfügbar. Noch ist nicht jedes Feature aus Microsoft Word komplett implementiert, doch die zur Verfügung stehenden Optionen sind schon sehr umfangreich. Einige davon werden im Folgenden anhand von Codebeispielen vorgestellt oder erwähnt. Damit diese Codebeispiele laufen, muss man natürlich PHPWord in sein Projekt einbinden. Zu Beginn beschäftigen wir uns mit dem einfachen Templating aus Word heraus.

Grundlegendes einfaches Templating

Mit PHPWord kann man sehr leicht mit Word-Templates arbeiten. Wenn man ein einfaches Dokument mit statischem Layout hat, in dem sich beispielsweise nur die Empfängeradressen ändern sollen, dann ist das der schnellste Weg. In Abbildung 1 sieht man das Template Template.docx, das mit Word erstellt wurde. Wie man sehen kann, sind Datum und Empfängeradresse durch Platzhalter ersetzt. Sie haben die Form ${placeholder}. Der PHP-Code, den man benötigt, um dieses Template dynamisch zu füllen, findet sich in Listing 1.

Abb. 1: Einfaches, in Word erstelltes Template

Listing 1: Einfaches Templating$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('Template.docx'); $templateProcessor->setValue('date', date("d-m-Y"));$templateProcessor->setValue(...

PHP Magazin
Drei Wege, ein Word-Dokument mit PHPWord zu erstellen

Alles andere als eine Textwüste

Ein Word-Dokument in PHP zu erstellen klingt zunächst einmal nach einer großen Tüftelarbeit, die viel Zeit beansprucht. Anwendungsmöglichkeiten gibt es einige, und so lohnt es sich, gleich mehrere Möglichkeiten auszuprobieren, um diese Aufgabe vernünftig zu lösen. Und wir werden sehen: Es ist doch einfacher als man denkt.

Maria Haubner


Ein Word-Dokument in PHP zu erstellen, kann eine ganz schöne Herausforderung werden. Microsoft Word bietet eine Vielzahl an Optionen und Einstellungen, und die möchte man natürlich auch nutzen, um ein zufriedenstellendes Ergebnis zu erhalten. Vielleicht ist man ja in der Situation, Dokumente für einen Geschäftskunden erstellen zu müssen, der nur Word kennt, aber keine Ahnung von den Einschränkungen in PHP hat. Da kann es natürlich passieren, dass der Kunde unzufrieden ist, wenn etwas auf einmal nicht machbar ist.

In diesem Artikel werden wir uns PHPWord etwas genauer anschauen und drei verschiedene Wege zeigen, mit denen man Word-Dokumente erstellen kann: grundlegendes einfaches Templating, die Erstellung von Dokumenten komplett in PHP und – um ein bisschen verrückt zu werden und die Sache auf die Spitze zu treiben – die Kombination von beidem. Nach der Lektüre sollte man auf jeden Fall eine Idee davon haben, wie man sich am besten seinen persönlichen Word-Creator gestalten könnte.

PHPWord

PHPWord ist Teil der PHPOffice-Bibliothek [1], die es erlaubt, Dokumente in verschiedenen Dateiformaten komplett in PHP zu lesen und zu schreiben. Die unterstützten Formate sind HTML, ODText, PDF, RTF und Word 2007, das wir uns genauer anschauen werden. PHPWord ist aktuell in Version 0.14 auf GitHub [2] verfügbar. Noch ist nicht jedes Feature aus Microsoft Word komplett implementiert, doch die zur Verfügung stehenden Optionen sind schon sehr umfangreich. Einige davon werden im Folgenden anhand von Codebeispielen vorgestellt oder erwähnt. Damit diese Codebeispiele laufen, muss man natürlich PHPWord in sein Projekt einbinden. Zu Beginn beschäftigen wir uns mit dem einfachen Templating aus Word heraus.

Grundlegendes einfaches Templating

Mit PHPWord kann man sehr leicht mit Word-Templates arbeiten. Wenn man ein einfaches Dokument mit statischem Layout hat, in dem sich beispielsweise nur die Empfängeradressen ändern sollen, dann ist das der schnellste Weg. In Abbildung 1 sieht man das Template Template.docx, das mit Word erstellt wurde. Wie man sehen kann, sind Datum und Empfängeradresse durch Platzhalter ersetzt. Sie haben die Form ${placeholder}. Der PHP-Code, den man benötigt, um dieses Template dynamisch zu füllen, findet sich in Listing 1.

Abb. 1: Einfaches, in Word erstelltes Template

Listing 1: Einfaches Templating$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('Template.docx'); $templateProcessor->setValue('date', date("d-m-Y"));$templateProcessor->setValue(...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang