Quelqu'un peut-il me dire pourquoi phpexcel n'autorise pas plus de 5000 lignes. J'utilise une phpexcel open-source pour la génération de rapports sur mes projets et je ne pouvais pas écrire plus de 5000 lignes de données de MySQL-DB. Mon résultat Fetch 7230 enregistre lorsque la requête est exécutée. Comment puis-je le réparer .. p>
5 Réponses :
sans avoir votre code ni le code de la classe est assez difficile, je crois que ... Voulez-vous dire que vous ne pouvez pas écrire plus de 5 000 rangées dans un fichier XLS ou dans une feuille de calcul? Sinon, une solution laideuse pourrait écrire 5k rangées dans la première feuille et le reste de la seconde (SO 5K rangées à chaque feuille, si DB devient plus gros). Je ne pense pas que XLS ait une limite de lignes de 5k, il devrait donc y avoir quelque chose de mal ou de malfiguré dans votre script..aviez-vous plusieurs fois? Est-ce que ça imprime toujours 5k rangées? ou pourrait-il être dû aux délais d'attente? (de votre script ou votre connexion) p>
Ce type de problème est plus que probablement un problème de mémoire de serveur. Quel type de serveur êtes-vous sur et êtes-vous sûr qu'il dispose de suffisamment de mémoire et de ressources disponibles pour traiter les fichiers de données volumineux? Si vous ne pouvez pas dire dans les deux cas, le meilleur travail autour est de lire quelques milliers de documents à la fois, de les traiter, puis de passer à la prochaine morceau. Je préférerais moi-même casser le gros fichier de données en pièces gérables (fichiers), sur lesquelles je pourrais transformer ensuite chacune de ces pièces pour obtenir le résultat souhaité. Une fois que toutes les pièces sont traitées, elles peuvent ensuite être fusionnées pour créer un nouveau fichier de données volumineux. P>
Il s'agit presque certainement d'un délai d'attente ou d'un problème de mémoire. La seule limite PHPExcel pour la taille des feuilles de calcul est de 65 536 lignes et 256 (IV) colonnes (lors de l'utilisation de l'écrivain Excel5); ou 1 048 576 lignes et 16 384 colonnes (XFD) (lors de l'utilisation de l'écrivain Excel2007). P>
Assurez-vous que votre journalisation d'erreur est toujours activée ... Utilisez Essayez / Catch Blocks pour piéger les exceptions PHPExcel. Et lisez les threads de discussion sur le site PHPExcel sur la mémoire et les performances. P>
J'ai eu le même problème. Vous devrez attribuer suffisamment de temps et de mémoire de mémoire.
J'ai testé ma solution sur 3 serveur différents ici est le résultat: p>
environ 5000 enregistrements (12 colonnes)
p>
fichier de lecture:
09:48:22 Mémoire maximale Utilisation: 1,25 MB P>
Données de lecture:
09:48:31 Haut de la mémoire maximale: 54.5 MB P>
Après indexation des données dans un tableau:
09:48:35 Usage de la mémoire maximale: 68.5 MB p>
enregistrements: 4504 p>
J'ai augmenté la mémoire et le temps de lire 22 000 enregistrements après indexation de 370,00 Mo P>
Voici la solution (étant donné que tout le reste est correct dans la séquence de code)
Où vous appelez phpexcel dans votre programme / fonction: p> Toutes l'initialisation ici de sorte que tous les objets soient prêts, puis allouez la mémoire pour lire les données de fichier et d'indexation dans la structure interne de programme: P> ini_set('memory_limit', '???'); //your memory limit as string
$excel = $excelReader->load($filePath);
"Memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB"
//do the rest of the structure!
INI_SET ('Memory_Limit', '-1'); seul a tendance à résoudre ce problème
Il s'agit presque certainement d'un délai d'attente ou d'un problème de mémoire. La seule limite PHPExcel pour la taille des feuilles de calcul est de 65 536 lignes et 256 (IV) colonnes (lors de l'utilisation de l'écrivain Excel5); ou 1 048 576 lignes et 16 384 colonnes (XFD) (lors de l'utilisation de l'écrivain Excel2007).
Vous pouvez modifier cette ligne p> comme p> alors il permet d'écrire des enregistrements plus de 65536 lignes. p> p>
Êtes-vous capable de récupérer exactement 5000 lignes? Si tel est le cas, il peut y avoir une limitation de PHPExcel, vous préférez probablement mieux demander au forum de soutien de Codeplex - j'ai toujours trouvé le soutien de PHPexcel pour être plutôt bon. Sinon, c'est probablement un problème de mémoire / délai d'attente avec votre serveur.