Warum PHPExcel nicht erlauben, zu schreiben, mehr als 5000 Zeilen
Kann einer mir bitte sagen, Warum PHPExcel erlaubt nicht mehr als 5000 Zeilen.
Ich bin mit einem open-source PHPExcel für die Berichterstellung auf meine Projekte und ich konnte nicht schreiben, mehr als 5000 Zeilen von Daten aus der Mysql-DB. Mein ResultSet Holen 7230 zeichnet auf, wenn die Abfrage ausgeführt wird. Wie kann ich es beheben..
- Sind Sie in der Lage, zum abrufen von genau 5000 Zeilen? Wenn das der Fall ist, kann es eine Beschränkung in PHPExcel, sind Sie wahrscheinlich besser dran, das bei der CodePlex-support-forum - ich habe immer gefunden, die Unterstützung für PHPExcel ziemlich gut sein. Wenn nicht, ist es wohl ein Speicher - /timeout-Problem mit Ihrem server.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fast sicher, dies ist ein timeout oder ein Speicher-Problem. Den nur PHPExcel Grenze für die Arbeitsblätter die Größe ist maximal 65.536 Zeilen und 256 (IV) Spalten (bei Verwendung des Excel5 Schriftsteller); oder bei 1.048.576 Zeilen und 16.384 (XFD) - Spalten (wenn der Excel2007-Writer).
Sicherzustellen, dass Ihre Fehler-logging ist immer aktiviert... try/catch-Blöcke zum abfangen für jeden PHPExcel Ausnahmen. Und Lesen Sie die PHPExcel Website Diskussions-threads auf den Speicher und Leistung.
Ich hatte das gleiche problem. Sie müssen genügend Zeit und Speicher zu begrenzen.
Ich getestet habe, meine Lösung auf 3 verschiedenen server-hier ist das Ergebnis:
Etwa 5000 Datensätze (12 Spalten)
Beim Lesen der Datei:
09:48:22 Peak-Speicherverbrauch: 1.25 MB
Lesen von Daten:
09:48:31 Peak memory usage: 54.5 MB
Nachdem die Indizierung der Daten in ein array:
09:48:35 Peak memory usage: 68.5 MB
Datensätze: 4504
Ich erhöhte die Speicher-und Zeit zum Lesen 22.000 Datensätze nach der Indizierung ging es bis zu 370.00 MB
Hier ist die Lösung (gegeben, dass alles korrekt in den code-Sequenz)
wo Sie anrufen PHPExcel in Ihrem Programm/Funktion:
Alles tun Initialisierung hier so, dass alle Objekte, die bereit sind, dann reservieren Sie Speicher für das Lesen der Datei und die Indizierung der Daten in Programm-interne Struktur:
Eine gute Idee ist, die es geschafft haben, all dies durch einige Kategorien von Daten, so dass Sie nicht ausführen zu 400 MB - FEHLERANFÄLLIG!
Fast sicher, dies ist ein timeout oder ein Speicher-Problem. Den nur PHPExcel Grenze für die Arbeitsblätter die Größe ist maximal 65.536 Zeilen und 256 (IV) Spalten (bei Verwendung des Excel5 Schriftsteller); oder bei 1.048.576 Zeilen und 16.384 (XFD) - Spalten (wenn der Excel2007-Writer).
Können Sie ändern Sie diese Zeile
als
Dann ist es erlaubt zu schreiben Datensätze, die mehr als 65536 Zeilen.
Zimmerreserviereung, ohne das Sie Ihren code oder die Klasse der code ist ziemlich schwierig, glaube ich...meinst du, dass Sie nicht schreiben können mehr als 5k Zeilen in eine XLS-Datei, oder in einem Arbeitsblatt? ansonsten ein hässlicher workaround könnte sein, schreiben 5K Zeilen im ersten Blatt und der rest in der zweiten (also 5K Zeilen je Blatt, wenn die DB größer wird).
Ich glaube nicht, dass XLS hat ein 5k Zeilen Einschränkungen, also es sollte was falsch sein oder falsch konfiguriert ist, die in Ihrem Skript..Hast du mehrmals versucht? Es kann doch nicht immer drucken 5k Zeilen? oder könnte es sein, aufgrund von Zeitüberschreitungen? (aus deinem Skript oder die Verbindung)
Diese Art von Problem ist mehr als wahrscheinlich, server, Speicher-Problem. Welche Art von server Sie sind und sind Sie sicher, es hat genug Speicher und Ressourcen zur Verfügung, um die Verarbeitung von großen Daten-Dateien? Wenn Sie nicht sagen, so oder so, der am besten umgehen, Lesen Sie in ein paar tausend Datensätze gleichzeitig Bearbeiten und verschieben Sie dann den nächsten chunk. Ich selbst würde es bevorzugen, brechen Sie die große Daten-Datei in handliche Stücke (Dateien), auf die ich später verarbeiten jedes dieser Stücke zu bekommen, der von mir gewünschten Ergebnis. Nachdem alle Teile verarbeitet wurden, können Sie dann zusammengeführt, um eine neue große Daten-Datei.