Foros del Web » Programando para Internet » PHP »

Problema al insertar Registros PHPExcel

Estas en el tema de Problema al insertar Registros PHPExcel en el foro de PHP en Foros del Web. Hola a Todos Tengo un problemilla, que no he podido solucionar y ya me tiene un poco Les explico : Tengo una consulta SQL que ...
  #1 (permalink)  
Antiguo 12/08/2014, 16:21
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 7 meses
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.....
  #2 (permalink)  
Antiguo 12/08/2014, 17:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Problema al insertar Registros PHPExcel

Si ya resolviste lo de la memoria y se agota el tiempo de ejecución, entonces usa set_time_limit()
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/08/2014, 19:02
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 16 años, 5 meses
Puntos: 26
Respuesta: Problema al insertar Registros PHPExcel

Hola, ¿qué tal?

Código PHP:
//$objPHPExcel->setActiveSheetIndex(0); 
Esa línea es la que se encargaría de seleccionar la primer hoja de manera que trabajes sobre ella, quizás por eso los registros se repiten en varias hojas. ¿Hay algún motivo por el cual comentaste dicha línea?

Un saludo.
  #4 (permalink)  
Antiguo 13/08/2014, 11:46
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 7 meses
Puntos: 76
Respuesta: Problema al insertar Registros PHPExcel

Hola..

Como comente anteriormente, por cada vez que leo la información abro el archivo de Excel , registro los nuevos valores y guardo.

El comportamiento que estoy viendo es el siguiente:

La primera vez me crea la hoja reporte con los primeros 10.000 registros, hasta ahí bien , ya cuando lee la segunda vez me inserta los otros 10.000 registros en la misma hoja reporte , pero se demora el doble de tiempo que la primer vuelta , abro el archivo y veo otra hoja llamada reporte 1 que contiene los primeros 10.000 registros que se habían insertado en la primer vuelta.

Yo creo que como en la segunda vuelta la hoja ya contiene información entonces el vuelve y guardar la hoja con el nombre reporte pero como ya existe la renombra a reporte 1....

No he podido solucionar el problemilla....

Última edición por informacionsys; 15/08/2014 a las 10:57

Etiquetas: phpexcel, registro, registros, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.