Foros del Web » Programando para Internet » PHP »

PHP OO - PHPExcel

Estas en el tema de PHP OO - PHPExcel en el foro de PHP en Foros del Web. Buenas, Tengo un problema, estoy peleando desde hace unos dias con esa libreria de php (PHPExcel) y no logro solucionarlo, ya probe todo lo que ...
  #1 (permalink)  
Antiguo 28/12/2011, 12:36
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
PHP OO - PHPExcel

Buenas,

Tengo un problema, estoy peleando desde hace unos dias con esa libreria de php (PHPExcel) y no logro solucionarlo, ya probe todo lo que dice la documentacion, acerca del cache. Tengo un script simple que de un momento a otro dejo de andar, tirando el error:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes) in I:\Copy of Server2Go\server2go\htdocs\Classes\PHPExcel\Cell.p hp on line 750

Les dejo el script por si lo necesitan:

Código PHP:
<?
require('includes/conn_.php');
require(
'Classes/PHPExcel.php');
$objPHPExcel = new PHPExcel;
// set syles
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
// writer will create the first sheet for us, let's get it
$objSheet $objPHPExcel->getActiveSheet();
$objSheet->setTitle(RESULTADOS);


//Informacion de Columnas y Titulos
$objSheet->mergeCells('A2:E3');
$objSheet->getStyle('A2')->getFont()->setBold(true)->setSize(18);
$objSheet->getCell('A2')->setValue('Resultados');
$objSheet->mergeCells('E5:C5');
$objSheet->getStyle('E5')->getFont()->setBold(true)->setSize(12);
$objSheet->getCell('E5')->setValue('Segundo Semestre');
$objSheet->getCell('A6')->setValue('SEMANA');
$objSheet->getCell('B6')->setValue('EMPLEADO');
$objSheet->getCell('C6')->setValue('CLIENTE');
$objSheet->getCell('D6')->setValue('CODIGO DE TRABAJO');
$objSheet->getCell('E6')->setValue('DIA');
$objSheet->getCell('F6')->setValue('HORA DE COMIENZO');
$objSheet->getCell('G6')->setValue('TRABAJADO');
$objSheet->getCell('H6')->setValue('DIA TERMINADO');
$objSheet->getCell('I6')->setValue('HORA TERMINADO');
$objSheet->getCell('J6')->setValue('COSTOS');
$objSheet->getCell('K6')->setValue('CODIGO DE SOLICITUD');
$objSheet->getCell('L6')->setValue('NUMERO DE EMPLEADO');
$objSheet->getCell('M6')->setValue('SEVERIDAD');
$objSheet->getCell('N6')->setValue('ESTADO');
$objSheet->getCell('O6')->setValue('DESCRIPCION');
$objSheet->getCell('P6')->setValue('TERMINO BIEN?');
$objSheet->getCell('Q6')->setValue('MATERIAL');
$objSheet->getCell('R6')->setValue('TOTAL GASTO');
$objSheet->getCell('S6')->setValue('TOTAL COBRADO');
$objSheet->getCell('T6')->setValue('TOTAL');
$objSheet->getCell('U6')->setValue('EMPRESA');
$objSheet->getStyle('A6:U6')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('003366');
$objSheet->getStyle('E5')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('008080');
$objSheet->getStyle('A6:U6')->getFont()->getColor()->setRGB('FFFFFF');
$objSheet->getStyle('E5')->getFont()->getColor()->setRGB('FFFFFF');
$objSheet->getStyle('A6:U6')->getFont()->setBold(true);
$objSheet->getColumnDimension('A')->setWidth(12,43);
$objSheet->getColumnDimension('B')->setWidth(33,86);
$objSheet->getColumnDimension('C')->setWidth(18);
$objSheet->getColumnDimension('D')->setWidth(37,57);
$objSheet->getColumnDimension('E')->setWidth(17,43);
$objSheet->getColumnDimension('F')->setWidth(23,57);
$objSheet->getColumnDimension('G')->setWidth(28);
$objSheet->getColumnDimension('H')->setWidth(17);
$objSheet->getColumnDimension('I')->setWidth(20,86);
$objSheet->getColumnDimension('J')->setWidth(28,86);
$objSheet->getColumnDimension('K')->setWidth(23,57);
$objSheet->getColumnDimension('L')->setWidth(23);
$objSheet->getColumnDimension('M')->setWidth(15,14);
$objSheet->getColumnDimension('N')->setWidth(32,43);
$objSheet->getColumnDimension('O')->setWidth(52,29);
$objSheet->getColumnDimension('P')->setWidth(21,57);
$objSheet->getColumnDimension('Q')->setWidth(26,43);
$objSheet->getColumnDimension('R')->setWidth(17,71);
$objSheet->getColumnDimension('S')->setWidth(19,43);
$objSheet->getColumnDimension('T')->setWidth(18);
$objSheet->getColumnDimension('U')->setWidth(62,14);
$objSheet->getRowDimension('6')->setRowHeight(31,5);


// write the file
$objWriter->save('pepe.xls');


?>
Lo que quiero aclarar es que el script andaba de 10, y de un momento al otro me empezo a tirar el error de memoria. Alguien tiene idea como solucionarlo?

Saludos, y gracias como siempre!
  #2 (permalink)  
Antiguo 28/12/2011, 13:46
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: PHP OO - PHPExcel

Código PHP:
ini_set('memory_limit''-1'); 
Con eso no habrá límite de memoria. Saludos.
  #3 (permalink)  
Antiguo 28/12/2011, 14:41
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: PHP OO - PHPExcel

1. Debes entender el error. El problema es que el proceso de generar el excel requirió más memoria de la que tiene permitido usar php.
2. Necesitas aumentar el límite de memoria, pero debes tener en cuenta que no en todos los servidores es posible.
3. Si no lo consigues, quizá debas contemplar otras opciones para generar el excel, como la antigua librería excel writer de pear, que genera excel 95 pero consume menos memoria.
  #4 (permalink)  
Antiguo 29/12/2011, 18:21
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: PHP OO - PHPExcel

Ya lo resolvi, es ese momento que te das cuenta que sos un "imbecil" sin animos de infrigir ninguna norma del foro.

Loopeaba aca : "$objSheet->mergeCells('E5:C5'); " y se re bugeaba.

Saludos,

Caso cerrado.

Etiquetas: phpexcel
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 17:03.