Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2014, 16:21
Avatar de informacionsys
informacionsys
 
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Problema al insertar Registros PHPExcel

Hola a Todos



Tengo un problemilla, que no he podido solucionar y ya me tiene un poco

Les explico :

Tengo una consulta SQL que me arroja por ejemplo 30.000 registros, cuando trato de exportar todo con PHPExcel se revienta por memoria.

Lo que hago es insertar cada 10.000 registros al archivo de excel hasta terminar... para esto uso algo parecido a un limit o un between donde le indico el rango de registros (Ej: 0 - 10000 , 11000 - 20000 , 21000 - 30000 ) , etc.....

Por cada vez que consulto los rangos abro el archivo de Excel y proceso la insercion....

Bueno un poco de codigo :

Código PHP:
Ver original
  1. //abrimos el archivo de excel
  2.                 $objPHPExcel    = PHPExcel_IOFactory::load($this->carpetaFiles.$nomExcel);
  3.                 //$objPHPExcel->setActiveSheetIndex(0);
  4.                 $objWorksheet   = $objPHPExcel->getActiveSheet();
  5.  
  6. //insertar registros
  7.  $letrasColumnas = $this->ci->nativesession->getData("reportev","letrasColumnas");//esto es un arreglo con el numero de letras (nroColumnas)
  8.  
  9.  foreach ($dataTabla AS $registro)
  10.                 {
  11.                     $c=0;//incrementador para las columnas
  12.                     //recorremos las columnas
  13.                     foreach ($registro AS $fila)
  14.                     {
  15.                         $fila = $this->arreglo_tildes($fila);
  16.                         $objWorksheet->SetCellValue($letrasColumnas[$c].$i,$fila);// aca insertamos los datos por ejemplo A1 B1 , etc.
  17.                         $c++;
  18.                     }
  19.                     $i++;
  20.  
  21.                 }//fin foreach datos
  22.  
  23.                 //Finalmente lo guardo
  24.                 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  25.                 $objWriter->save($this->carpetaFiles.$nomExcel);

Esto funciona y no funciona, cuando abro el archivo me encuentro con 2 Hojas Mas , cada una tiene 10.000 registros (todos son iguales); y la primer hoja perfecto porque me aparecen los 30.000...
Pero el proceso se revienta por tiempo de ejecución .....

Es muy raro, he intentado y he buscado pero no encuentro la causa.....