Ich benutze die Bibliothek PHPExcel 1.7.9
, um mit Excel
Dateien zu arbeiten. Zuerst erstelle ich eine Vorlage, stilisiere und poliere sie. Um die Hardcodierung von Stilen zu vermeiden, öffne ich diese Vorlage, benutze die oben erwähnte Bibliothek, ändere einige Werte und speichere sie als neue .xlsx
-Datei.
Zuerst holen wir diesen Stil aus Zellen.
%Vor%Hier ist die rekursive Funktion, die Kategorien und Unterkategorien anzeigt.
%Vor%Das Problem
Wenn $sheet->duplicateStyle()
verwendet wird, ist es wegen unendlicher Rekursion unmöglich, ein Dokument zu speichern.
Maximale Funktionsverschachtelungsebene von '200' erreicht, Abbruch! & lt; - FATALER FEHLER
Das Problem ist im nächsten Stück Code, in PHPExcel_Style_Fill
class, ein Objekt referenziert sich immer wieder selbst.
Gibt es eine Problemumgehung, um das Problem zu lösen? Ich würde auch alle Ideen akzeptieren, wie man einen vollständigen Stil einer Zelle auf eine andere anwenden kann.
Lösung:
Wie @MarkBaker in Kommentaren gesagt hat, enthält der Zweig develop
auf GitHub wirklich Korrekturen für den Fehler.
BEARBEITEN Ich habe eine Pull-Anfrage mit einem Fix hinzugefügt: Ссылка
Dies passiert, wenn Sie versuchen, den Stil einer Zelle in dieselbe Zelle zu kopieren; Sieh dir das an:
%Vor%Es wird gut funktionieren. ABER wenn ich eine weitere Zeile wie folgt hinzufüge:
%Vor% dann bang, beginnt die unendliche Rekursion nach dem Aufruf der Methode save
Um Ihren Code zu reparieren, sollten Sie diesen Teil ändern:
%Vor%Zu etwas in der Art von:
%Vor%Ohne die Besonderheiten der Bibliothek zu kennen ...
Wie wäre es, dies zu ändern:
%Vor%Dazu:
%Vor% Wenn die Hash-Codelogik nach der if
-Anweisung nicht auf _isSupervisor
zutrifft, fügen Sie eine weitere logische Anweisung hinzu und geben Sie einen festen Wert wie folgt zurück: