es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En PHPExcel, cuando intento crear un archivo de Excel con un gran número de filas (aproximadamente 20000) y descargarlo, no funciona.

Un número pequeño de filas funciona bien y es posible descargar. ¿Alguna ayuda? Recibo una alerta en la función de error en la llamada ajax. ¿Hay algún problema con JS o algún problema relacionado con la memoria?

Código PHP:

require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';

// Escribiendo en una hoja de excel, aproximadamente 20000 filas

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
ob_start();
$objWriter->save("php://output");
$xlsData = ob_get_contents();
ob_end_clean();
$response =  array(
'op' => 'ok',
'file' => "data:application/vnd.ms-excel;base64,".base64_encode($xlsData),
'data' => $outfilename.'.xls'
);
die(json_encode($response));

Código JavaScript:

$.ajax({
  url: "mypage.php",
  type: "POST",
  dataType:'json',      
  data:
  {
    rpttype:"0"
  },      
  success: function(data)
  {
    var $a = $("<a>");
    $a.attr("href",data.file);
    $("body").append($a);
    $a.attr("download", data.data);
    $a[0].click();
    $a.remove();
  },
  error: function(jqXHR, textStatus, errorThrown)
  {
    alert('Error en llamada.');
  }
});</a>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema de memoria con el script de PHP al intentar escribir aproximadamente 20,000 filas en la hoja de Excel. Una solución podría ser tratar los datos en bloques más pequeños para reducir el uso de memoria. Otro problema potencial podría estar relacionado con el código de JavaScript, pero sin más detalles sobre el mensaje de error es difícil determinar si ese es la causa principal del problema. Se necesitaría más información para proporcionar una solución más específica.

Comments are closed.