PHPExcel à l'Exportation pour les gros Fichiers échoue

Je suis à l'aide de la bibliothèque PHPExcel pour générer des données excel basé sur mysql datbase. MySql résultats de la requête dans le 1,34,000 lignes. Et Excel prend en charge 65 536 Lignes sur une feuille de calcul. Ainsi fait logique comme

foreach($result as $valeur) 
{ 
$val = array_values($valeur); 

if($rowscounter < 65000) 
{ 
$objPHPExcel->addRow($val,$rowscounter); 
} 
d'autre 
{ 
$active_sheet++; 
$objPHPExcel->createSheet(); 
$objPHPExcel->setActiveSheetIndex($active_sheet); 
$rowscounter = 1; 
} 
$rowscounter++; 
} 
//livrer en-tête 
header("Content-Type: $mtype; charset=" . $objPHPExcel->sEncoding); 
header("Content-Type:application/octet-stream"); 
header("Content-Disposition: inline; filename=\"" . $filename . ".$ext\""); 

//L'enregistrer comme un fichier excel 2003 
$objWriter = IOFactory::createWriter($objPHPExcel,$objPHPExcel->sFileFormat); 
//echo "utilisation maximale de la mémoire:" . (memory_get_peak_usage(true) /1024 /1024) . "MO";exit; 
$objWriter->save('php://output'); 

de créer de nouveaux feuille de calcul après 65000 enregistrements sont atteint pour un woeksheet.

Mais il ne fonctionne pas; ne pas donner toute sortie ou d'erreur. J'ai d'abord pensé que sa en raison de la limite de mémoire. Mais quand l'écho il montre maximale de la mémoire à 1400.5 MO et j'ai mis ma limite de mémoire jusqu'à 3500MB à l'aide de ini_set('memory_limit', '3500M');

Pourriez-vous s'il vous plaît suggérer quelque chose ou de tout autre?

Pouvez-vous décrire les modifications que vous avez apportées à PHPExcel? Vous faites référence à des méthodes telles que $objPHPExcel->addRow() (qui je m'attends à être associé à une feuille de calcul, plutôt que d'un classeur) et les propriétés de $objPHPExcel->sFileFormat qui ne font pas partie de la bibliothèque PHPExcel code.
Avez-vous essayé de débogage pour déterminer si c'est de la faute dans le foreach() en boucle, ou lorsque vous essayez d'écrire le fichier?
Oui Marc, $objPHPExcel->addRow() est ma fonction qui n'est rien mais utilise ->getActiveSheet()->setCellValueByColumnAndRow();
Oui $objPHPExcel->sFileFormat ne fait pas partie de PHPExcel. Son de la variable personnalisée. Et code ci-dessus fonctionne parfaitement pour 10 000 enregistrements.
Vous pensez que ce n'est pas de la mémoire - même si ma règle d'or de l'estimation est de 1k par cellule (colonnes x lignes) * 2 + 25MO - mais d'autres possibilités consistent à frapper d'un dépassement de limite.

OriginalL'auteur Asif Mulla | 2010-10-08