Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Phpexcel con ajax

Estas en el tema de Phpexcel con ajax en el foro de PHP en Foros del Web. Hola a Todos, He estado trabajando con phpExcel desde ya varios meses y no había tenido problemas hasta ahora en generar archivos excel de todo ...
  #1 (permalink)  
Antiguo 23/07/2015, 15:52
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Phpexcel con ajax

Hola a Todos,
He estado trabajando con phpExcel desde ya varios meses y no había tenido problemas hasta ahora en generar archivos excel de todo tipo.
Hasta la fecha he estado enviando datos desde javascript de la siguiente manera.

window.open('reporte_prueba.php?reporte=demo&....& ...');

Utilizo la sintaxis anterior para abrir una página de manera temporal
ya que mi página php tiene como última instrucción crear el archivo excel sin que esta se guarde en la pc a través del output

Código PHP:
$nom_file="post_get";
    
//Excel5
    
header('Content-Type: application/vnd.ms-excel');//PARA EXCEL5
    
header("Content-Disposition: attachment;filename=".$nom_file.".xls");
    
header('Cache-Control: max-age=0');
    
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5');//Excel5    
    
$objWriter->save('php://output');
    exit; 
Lo que quisiera saber es que si alguien ha podido enviar datos
usando AJAX, enviando parámetros que no sean de tipo concatenación
como lo describí inicialmente, sino mandando datos
tipo array por decir.
EJM:

Código Javascript:
Ver original
  1. var aDetalle=Array();
  2.       aDetalle[0]={nTelefono:'3885957',nActivo:1};
  3.       aDetalle[1]={nTelefono:'940243730',nActivo:1};
  4.      
  5.       var sPagina="resp_post_get.php";
  6.       var aParams={};
  7.       aParams['sCliente']=sCliente;
  8.       aParams['nEdad']=nEdad;
  9.       aParams['aDetalle']=JSON.stringify(aDetalle);
  10.       $.ajax({
  11.         async:true,
  12.         type:"POST",
  13.         dataType:"html",//html
  14.         contentType:"application/x-www-form-urlencoded",
  15.         url:sPagina,
  16.         data:aParams,
  17.         beforeSend: function(){},
  18.         success:function(output){
  19.             alert(output);
  20.             window.location=output.url;
  21.            
  22.         },
  23. ...
  24. ..

Cabe recalcar que sí he hallado la manera de generar el archivo excel
de la manera que solicito, pero sólo me funciona cuando creo el archivo excel y lo guardo primero en la pc. LO QUE QUIERO ES SEGUIR USANDO el "output"

Gracias por tomarse el tiempo en leer el post. Ojala alguien haya logrado esta hazaña
  #2 (permalink)  
Antiguo 05/08/2015, 11:18
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 1 mes
Puntos: 8
Respuesta: Phpexcel con ajax

Me respondo a mi mismo

La solución es:

Código PHP:
Ver original
  1. //...
  2. //....
  3.     ob_start();
  4. $objWriter->save("php://output");
  5. $xlsData = ob_get_contents();
  6.  
  7. $opResult = array(
  8.         'status' => 1,
  9.         'data'=>"data:application/vnd.ms-excel;base64,".base64_encode($xlsData)
  10.      );
  11.     echo json_encode($opResult);

desde JS:
Código Javascript:
Ver original
  1. $.ajax({
  2.             async:true,
  3.             type:"POST",
  4.             dataType:"html",//html
  5.             contentType:"application/x-www-form-urlencoded",//application/x-www-form-urlencoded
  6.             url:"resp_export_xls.php",
  7.             data:aParams,
  8.             beforeSend: function(){},
  9.             success:function(data){
  10.                 //alert(data);
  11.                 var opResult = JSON.parse(data);
  12.                       var $a=$("<a>");
  13.                       $a.attr("href",opResult.data);
  14.                       //$a.html("LNK");
  15.                       $("body").append($a);
  16.                       $a.attr("download","hola.xlsx");
  17.                       $a[0].click();
  18.                       $a.remove();
  19. //..
  20. //...
Son las secciones más importantes.
Espero a alguien le sirva en algun momento.
NOTA: No todo es felicidad, no funciona en IE, una razón más para odiarlo

Por mi parte seguiré buscando soluciones para IE, ya que estoy en un gran proyecto y tiene que ser compatible con todos los navegadores o por lo menos en los más comunes

Saludos!.

Etiquetas: ajax, fecha, html, 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 04:14.