Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al generar Excel desde php - GET

Estas en el tema de Error al generar Excel desde php - GET en el foro de PHP en Foros del Web. Hola comunidad. Tengo un problema al generar una cotización en donde tiene un total de 380 items, se que suena bestial, pero asi trabajan en ...
  #1 (permalink)  
Antiguo 11/05/2016, 14:19
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Error al generar Excel desde php - GET

Hola comunidad.
Tengo un problema al generar una cotización en donde tiene un total de 380 items, se que suena bestial, pero asi trabajan en esa empresa.
Cuando intento exportar la cotización con 380 items a través del método GET vía window.open() de JS esta se toma unos 5-10 seg. y me muestra el siguiente mensaje:
Archivo no encontrado
Firefox no puede encontrar el archivo en http://www.....

.Compruebe que el nombre de archivo no tiene errores de escritura, incluyendo el uso de mayúsculas.
.Compruebe si el archivo ha sido movido, renombrado o eliminado.

Chrome:
No se puede acceder a este sitio web
es posible que la página web http://www....
esté temporalmente inactiva o que se haya trasladado definitivamente a otra dirección.

PD: Genero archivos excel a través de la librería PHPExcel

Aunque el error no corresponda a falta de memoria ram le aumente a 1024M en memory_limit, pero me sigue mostrando el mismo error.
¿Alguien tiene alguna idea del porque no carga la página?
Desde MySQL se toma 8seg. para cargar mi consulta.

Saludos.
  #2 (permalink)  
Antiguo 11/05/2016, 14:22
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Error al generar Excel desde php - GET

y el codigo????
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 11/05/2016, 14:29
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Respuesta: Error al generar Excel desde php - GET

Cita:
Iniciado por xfxstudios Ver Mensaje
y el codigo????
No lo puse porque no hay error por parte de PHP y si posteo esto en el foro html o web en sí muchas de las páginas indican que se debe aun virus, pero si es necesario ahí va. Aunque repito que el error no está en el código, sino no me generaría las demás cotizaciones.
PD: El código está reducido puesto que es muy largo y no me permite subirlo todo.
Código PHP:
Ver original
  1. require_once("../info_sesion.php");
  2. require_once("../cls_mysqli.php");
  3. require_once("../funciones.php");
  4.  
  5. set_time_limit(0);//Tiempo maximo 60 -> 1 min ; 600 ->10 min.. (TIEMPO MAXIMO DE ESPERA)
  6. ini_set("memory_limit","1024M");//maxima memoria que se utilizara temporalmente (archivos con grandes registros)- usando multiceldas no se puede exportar las equivalencias
  7. $sIdDivPrincipal="";$sProceso="";$nID="";
  8. $sNombreArchivo="rpt_sin_nombre";//nombre por defecto
  9. $sQueryCab="";$sQueryDet="";$nSaltoLinea=1;//
  10.  
  11. if(isset($_GET['sIdDivPrincipal'])){$sIdDivPrincipal=$_GET['sIdDivPrincipal'];}
  12. if(isset($_GET['sProceso'])){$sProceso=$_GET['sProceso'];}
  13. if(isset($_GET['nID'])){$nID=$_GET['nID'];}
  14.  
  15. switch($sProceso){
  16.     case "XLS":
  17.         require_once '../ClassesPHPExcel/PHPExcel.php';
  18.             require_once '../ClassesPHPExcel/PHPExcel/IOFactory.php';
  19.             require_once '../ClassesPHPExcel/PHPExcel/Writer/Excel5.php';
  20.             require_once '../ClassesPHPExcel/PHPExcel/RichText.php';
  21.        
  22.             $styleBordeAll = array(
  23.                 'borders' => array(
  24.                     'allborders' => array(
  25.                         'style' => PHPExcel_Style_Border::BORDER_THIN,
  26.                       //'color' => array('argb' => '#03F'),
  27.                     )
  28.                 ),
  29.             );
  30.             $styleBorderOutLine=array("borders"=>array("outline"=>
  31.             array("style"=>PHPExcel_Style_Border::BORDER_THIN,"color"=>array('argb' => '00000000'))));
  32.        
  33.         $objPHPExcel = new PHPExcel();
  34.         $objPHPExcel->setActiveSheetIndex(0);
  35.         $objPHPExcel->getDefaultStyle()->getFont()
  36.         ->setName('Arial')
  37.         ->setSize(9);//Calibri
  38.         $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); //HOJA A4
  39.         $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT);//VERTICAL
  40. $sQueryCab="SELECT cotcli.num_cotizacion_cliente,cli.razon_social,
  41.             TRIM(CONCAT(acli.nombre,' ',COALESCE(acli.ape_paterno,''),' ',COALESCE(acli.ape_materno,'')))AS atencion,
  42.             cotcli.num_requerimiento,cotcli.telefono,cotcli.correo,cotcli.guia_remision_ref,cotcli.uso,cotcli.nuestra_ref,
  43.             cotcli.num_ot_ref,cotcli.garantia,cotcli.observaciones,fpago.dsc_forma_pago,
  44.             cotcli.validez_oferta_dias,cotcli.subtotal,cotcli.dscto,cotcli.igv,cotcli.total,
  45.             TRIM(CONCAT(rptaven.nombre,' ',COALESCE(rptaven.ape_paterno,''),' ',COALESCE(rptaven.ape_materno,'')))as rpte_venta,
  46.             rptvencar.dsc_cargo,rptaven.email_trabajo AS correo_rpte_venta,
  47.             COALESCE(CONCAT(rptaven.telf_celular,IF(rptaven.telf_celular IS NOT NULL,
  48.             IF(rptaven.anexo IS NULL,CONCAT(''),CONCAT(' - ',rptaven.anexo)),'')),rptaven.anexo) AS telf_rpte_venta,
  49.            
  50.             tmon.dsc_tipo_moneda AS tipo_moneda,tmon.sigla_moneda,
  51.             DATE_FORMAT(cotcli.fecha_reg, '%Y-%m-%d')AS fecha_reg,cotcli.cod_tipo_trabajo
  52.             FROM cotizacion_cliente cotcli
  53.             INNER JOIN cliente cli ON cli.cod_cliente=cotcli.cod_cliente           
  54.             LEFT JOIN agente_cliente acli ON acli.cod_agente_cliente=cotcli.cod_agente_cliente
  55.  
  56.             LEFT JOIN forma_pago fpago ON fpago.cod_forma_pago=cotcli.cod_forma_pago
  57.             LEFT JOIN personal rptaven ON rptaven.cod_personal=cotcli.cod_rpte_venta
  58.             LEFT JOIN cargo rptvencar ON rptvencar.cod_cargo=rptaven.cod_cargo
  59.             LEFT JOIN tipo_moneda tmon ON tmon.cod_tipo_moneda=cotcli.cod_tipo_moneda
  60.             WHERE cotcli.cod_cotizacion_cliente=".$nID;
  61.             //umed.sigla AS umed_abr,  
  62.             $sQueryDet="SELECT cotclid.nitem,cotclid.cantidad,umed.sigla AS umed_abr,cotclid.codigo_equivalencia_cli,
  63.             cotclid.codigo_equivalencia_cot,
  64.             TRIM(CONCAT(cotclid.dsc_articulo_cot,' ',COALESCE(CONCAT('(',cotclid.observaciones,')'),'')))AS dsc_articulo_cot,
  65.             cotclid.dsc_tiempo_entrega, cotclid.punit, cotclid.importe
  66.             FROM cotizacion_cliente_det cotclid
  67.             LEFT JOIN equivalencia equiv ON (
  68.             (cotclid.cod_equivalencia_cli=equiv.cod_equivalencia AND cotclid.cod_equivalencia_cot IS NULL)
  69.             OR (cotclid.cod_equivalencia_cot=equiv.cod_equivalencia AND cotclid.cod_equivalencia_cli IS NULL)
  70.             OR (cotclid.cod_equivalencia_cli IS NOT NULL AND cotclid.cod_equivalencia_cot IS NOT NULL
  71.                 AND cotclid.cod_equivalencia_cot=equiv.cod_equivalencia)
  72.             )
  73.             LEFT JOIN articulo art ON art.cod_articulo=equiv.cod_articulo
  74.             LEFT JOIN unidad_medida umed ON umed.cod_unidad_medida=art.cod_unidad_medida
  75.             WHERE cotclid.cod_cotizacion_cliente=".$nID;   
  76. $dblink=new mysqli_jd("scomercial");
  77.             $respQueryCab=$dblink->fEjecutarQuery($sQueryCab);
  78.             $rowCab=$dblink->faDatosResult($respQueryCab);$rowCab=$rowCab[0];
  79.            
  80.             if($rowCab['cod_tipo_trabajo']==2)$sQueryDet="CALL prc_cotizacion_reparacion_info(".$nID.")";
  81.            
  82.             $respQueryDet=$dblink->fEjecutarQuery($sQueryDet);
  83.             $rowDet=$dblink->faDatosResult($respQueryDet);
  84.             $dblink->flnkClose();
  85.             //echo count($rowDet);exit;
  86.            
  87.             $pageMargins =$objPHPExcel->getActiveSheet()->getPageMargins();
  88.             // margin is set in inches (0.5cm)
  89.             $margin=0.5;
  90.             $margin = $margin / 2.54;
  91.             //$pageMargins->setTop($margin);//$pageMargins->setBottom($margin);
  92.             $pageMargins->setTop($margin);
  93.             $pageMargins->setLeft($margin);
  94.             $pageMargins->setRight($margin);
  95.  
  96. //HEADER
  97.                 $objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing();
  98.                 $objDrawing->setName('PHPExcel logo');
  99.                 $objDrawing->setPath('../imagenes/img/marcas.jpg');
  100.                 //$objDrawing->setHeight(40);
  101.                 $objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_FOOTER_CENTER);
  102.                 $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&C&G');
  103.                
  104.                 $objPHPExcel->setActiveSheetIndex(0)
  105.                 ->setCellValue("C1","B&L ASOCIADOS S.A.")
  106.                 ->setCellValue("B3","RUC 20267390631")
  107.                 ->setCellValue("B4","JR. SAN MARTIN 472 MIRAFLORES - LIMA 18")
  108.                 ->setCellValue("B5","TEL: 2427482 / 2428924 / 2422719");
  109.                
  110.            
  111.                 $objPHPExcel->setActiveSheetIndex(0)
  112.                 ->setCellValue("G2","N°")
  113.                 //->setCellValue("H2","00001")
  114.                 ->setCellValue("I2","20".$sNumAnio)
  115.                 ->setCellValue("G3","DIA")
  116.                 ->setCellValue("H3","MES")
  117.                 ->setCellValue("I3","AÑO");
  118.                
  119.                 $objPHPExcel->agregarValorACelda("H2",$sNumDoc,"str");//NUM COTIZACION
  120.                
  121.                 $objPHPExcel->setActiveSheetIndex(0)
  122.                 ->setCellValue("A7","SEÑORES:")
  123.                 ->setCellValue("A8","REFERENCIA:")
  124.                 ->setCellValue("A9","TELÉFONO:")
  125.                 ->setCellValue("A10","CORREO:")
  126.                 ->setCellValue("A11","ATENCIÓN:")
  127.                 ->setCellValue("A12","G/R N.:");
  128.                
  129.                 $objPHPExcel->agregarValorACelda("D7",$rowCab['razon_social'],"str");
  130.                 $objPHPExcel->agregarValorACelda("D8",$rowCab['num_requerimiento'],"str");
  131.                 $objPHPExcel->agregarValorACelda("D9",$rowCab['telefono'],"str",
  132.                 array("alignment"=>array("horizontal"=>PHPExcel_Style_Alignment::HORIZONTAL_LEFT,"wrap"=>true)));
  133.                 $objPHPExcel->agregarValorACelda("D10",$rowCab['correo'],"str",
  134.                 array("alignment"=>array("horizontal"=>PHPExcel_Style_Alignment::HORIZONTAL_LEFT,"wrap"=>true)));
  135.                 $objPHPExcel->agregarValorACelda("D11",$rowCab['atencion'],"str");
  136.                 $objPHPExcel->agregarValorACelda("D12",$rowCab['guia_remision_ref'],"str");
  137.                
  138.                 $objPHPExcel->agregarValorACelda("G7","FORMA DE PAGO:","str",
  139.                 array("font"=>array("bold"=>true)));
  140.                 $objPHPExcel->agregarValorACelda("G8",$rowCab['dsc_forma_pago'],"str");
  141.                 $objPHPExcel->agregarValorACelda("G9","Para cualquier consulta, contacte a:","str",
  142.                 array("font"=>array("bold"=>true)));
  143.                 $objPHPExcel->agregarValorACelda("G10",$rowCab['rpte_venta'],"str");
  144.                 $objPHPExcel->agregarValorACelda("G11",$rowCab["correo_rpte_venta"],"str");
  145.                 $objPHPExcel->agregarValorACelda("G12",$rowCab['telf_rpte_venta'],"str");
  146.                
  147.                 $objPHPExcel->getActiveSheet()->getStyle("A7:C12")
  148.                 ->applyFromArray(array("alignment"=>array("horizontal"=>PHPExcel_Style_Alignment::HORIZONTAL_RIGHT),
  149.                 "font"=>array("bold"=>true)));
  150.                
  151.                 $objPHPExcel->getActiveSheet()->getStyle("G7:I12")
  152.                 ->applyFromArray(array("alignment"=>array("horizontal"=>PHPExcel_Style_Alignment::HORIZONTAL_CENTER,"wrap"=>true)));
  153.                
  154.                
  155.                 $nItemsMin=20;$nTotalItems=0;
  156.                
  157.                 $aTituloDet=array("Item","Cant.","Unid. Medida","Código Cliente","N/P","Descripción",
  158.                 "Tiempo de Entrega","Precio Unitario ".$rowCab['sigla_moneda'],"Precio Total ".$rowCab['sigla_moneda']);
  159.                 $aTipoDato=array("str","int","str","str","str","str","str","0.00","0.00");
  160.  
  161.                 $nTotalItems=count($rowDet);
  162.                 $objPHPExcel->pConvertArrayToEXCEL("",$rowDet,$aTituloDet,array(13+$nSaltoLineaRep,0),$aTipoDato);
  163.                 if($nTotalItems>$nItemsMin){//22>20
  164.                     $nSaltoLinea+=$nTotalItems-$nItemsMin;
  165.                 }
  166.                
  167.                 $objPHPExcel->getActiveSheet()->getStyle("A".(14+$nSaltoLineaRep).":I".(34+$nSaltoLinea))
  168.                 ->applyFromArray(array("borders" => array("allborders" => array("style" => PHPExcel_Style_Border::BORDER_THIN)),
  169.                 "font"=>array("size"=>9),"alignment"=>array("horizontal"=>PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
  170.                 "wrap"=>true)));//GRILLA DETALLE
  171.            
  172.                
  173.                 $objPHPExcel->setActiveSheetIndex(0)
  174.                 ->setCellValue("H".(38+$nSaltoLinea),"SubTotal:")
  175.                 ->setCellValue("H".(39+$nSaltoLinea),"Dsct. ".($fDsctoGral>0?$fDsctoGral:'')."%:")
  176.                 ->setCellValue("H".(40+$nSaltoLinea),"I.G.V. ".$fIGVGral."%:")
  177.                 ->setCellValue("H".(41+$nSaltoLinea),"Total ".$rowCab['sigla_moneda'].":");
  178.  
  179. header('Content-Type: application/vnd.ms-excel');//PARA EXCEL5
  180.             header("Content-Disposition: attachment;filename=".$sNombreArchivo.".xls");
  181.             header('Cache-Control: max-age=0');
  182.             $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  #4 (permalink)  
Antiguo 13/05/2016, 08:36
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Respuesta: Error al generar Excel desde php - GET

Hola comunidad.
Les comento que hoy por la mañana intenté generar nuevamente el reporte en excel y me lo creó sin problemas; claro, se toma unos 15 seg. apróximadamente, pero se genera el excel.
Lo más seguro es que haya habido problemas en el servidor ese día.

Saludos.

Etiquetas: excel, mysql
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 08:43.