PHP Excel Templator (PHP-Templating-Engine für Excel) oder wie wir zuvor Hardcode für Excel geschrieben haben

Bild

Ich denke, dass aus dem Screenshot bereits hervorgeht, worum es geht. Um den bereits in der Dokumentation beschriebenen Text jedoch nicht zu duplizieren , werde ich nur auf wichtige Punkte eingehen.

Tatsache ist, dass die PHP-Bibliothek für die Arbeit mit Excel-Dokumenten schon vor langer Zeit erschienen ist, aber die Template-Engine noch nicht dafür erfunden wurde (zumindest habe ich nichts Vernünftigeres gefunden). Und wir alle brauchen eine solche Bibliothek für Excel, in der wir Vorlagenvariablen in die Vorlage einfügen, Parameter für sie übergeben und sie an das Rendering senden. All dies geschieht mit einem Befehl:

use alhimik1986\PhpExcelTemplator\PhpExcelTemplator;
PhpExcelTemplator::saveToFile('./template.xlsx', './exported_file.xlsx', [
	'{current_date}' => date('d-m-Y'),
	'{department}' => 'Sales department',
]);

Außerdem haben wir folgende Wunschliste:

  • Wir wollen mehrere Template-Variablen in einer Zelle anwenden
  • und wir wollen auch ein Array übergeben, und in Excel wurden dafür die entsprechenden Zeilen in der Zelle erstellt
  • aber was ist mit einem zweidimensionalen Array, so dass nicht nur Zeilen, sondern auch Spalten erstellt werden
  • Außerdem müssen Stile für jede eingefügte Zelle angewendet werden, um beispielsweise große Mengen in Grün hervorzuheben oder um Mitarbeiter hervorzuheben, die sich durch Fettdruck hervorgehoben haben

Sie werden sagen, dass ich bereits versucht habe, dies zu tun: Wenn Zeilen erstellt werden, werden die Spalten rechts von dieser Zelle dupliziert. Nein, das wird nicht passieren, weil in Wirklichkeit nicht die Linien erzeugt werden, sondern die "Zellen mit einer Verschiebung nach unten". Übrigens, in PHP Spreadsheet gibt es derzeit keine solche Funktion, es können nur Zeilen eingefügt werden.

Sind Nebenwirkungen bei Verwendung einer großen Anzahl eindimensionaler und zweidimensionaler Arrays möglich? Ja, das sind sie. Insbesondere, wenn mehrere zweidimensionale Arrays in derselben Zeile und in mehreren Zeilen hintereinander verwendet werden. Tatsache ist, dass Zellen (rechts), die keine Vorlagenvariablen enthalten, sich nicht bewegen. Infolgedessen können sie von Zellen mit einem zweidimensionalen Array überlappt werden. Der Ausweg besteht darin, Vorlagenvariablen mit leeren Daten zu erstellen und diese Variablen neben den Zellen zu platzieren, für die Sie einen Einzug vornehmen müssen. Ein Beispiel für Nebenwirkungen finden Sie im Ordner „samples“.

Es klingt kompliziert, aber wenn Linien erstellt würden, gäbe es viel mehr Nebenwirkungen. Das heißt, die Wahrscheinlichkeit von Nebenwirkungen ist relativ gering.

Die Pläne: Erstellen Sie ein Beispiel für den Umgang mit Nebenwirkungen. die Möglichkeit, Stile anzuwenden, ohne Setter zu verwenden (um weniger Klassen zu exportieren und die Menge des verwendeten Codes zu reduzieren). Warum habe ich es jetzt nicht getan? Ich brauche Unterstützung, das heißt, ich muss wissen, dass jemand dies braucht. Und dann stellt sich plötzlich heraus, dass ich ein Fahrrad erfunden habe und alles, was ich getan habe, war komplettes Spiel. Deshalb warte ich auf Ihr Feedback.

Link zum Projekt

Jetzt auch beliebt: