PHP - Error en output

 
Vista:
Imágen de perfil de Violeta

Error en output

Publicado por Violeta (5 intervenciones) el 14/01/2022 11:14:49
Buenos días.

Tengo una función con phpExcel que hasta hace unos días me funcionaba perfectamente, pero hoy de repente (sin tocar absolutamente nada) ha dejado de funcionar.

Haciendo pruebas me sacado que el error lo da al final del todo en el output. Al principio me daba el error "Es posible que la página web esté temporalmente inactiva o que se haya trasladado definitivamente a otra dirección". y no se descargaba; después conseguí que se descargara el archivo, pero al abrir me sale la ventana de elegir codificación, y cuando elijo xml me da "error de entrada/salida" (la cosa es que ni siquiera se debería abrir la ventana).

He probado con versiones más antiguas del proyecto por si es algo que instalé después y nada, no me va en ninguna versión. También actualicé composer.

Código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public function miExcel(){
        $data = array();
 
    $columnas=array('NOMBRE','APELLIDOS');
 
    $campos = array();
    foreach ($columnas as $key => $value) {
      $campos[]=$value;
    }
    $data[]=$campos;
 
    $objetos = array(
      array(
        'nombre'=>'A',
        'apellidos'=>'B'
      ),
      array(
        'nombre'=>'C',
        'apellidos'=>'D'
      ),
    );
 
    foreach ($objetos as $objeto) {;
      $row = array();
      $row[]=$objeto['nombre'];
      $row[]=$objeto['apellidos'];
 
      $data[]=$row;
    }
 
 
    $file_name = "Archivo";
 
    $objPHPExcel = new \PHPExcel();
 
    $objPHPExcel->getActiveSheet()->fromArray($data, null, 'A1');
    $objPHPExcel->getActiveSheet()->setTitle($file_name);
 
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
      $objPHPExcel->setActiveSheetIndex($objPHPExcel->getIndex($worksheet));
      $sheet = $objPHPExcel->getActiveSheet();
      $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
      $cellIterator->setIterateOnlyExistingCells(true);
      foreach ($cellIterator as $cell) {
        $sheet->getColumnDimension($cell->getColumn())->setAutoSize(true);
      }
    }
 
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$file_name.'.xls"');
    header('Cache-Control: max-age=0');
    header('Cache-Control: max-age=1');
    header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    header ('Cache-Control: cache, must-revalidate');
    header ('Pragma: public');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
    }

Gracias por anticipado.

Pd: He probado a abrir con "Documento maestro de ODF" y sí se abre, pero salen caracteres aleatorios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Violeta

Error en output

Publicado por Violeta (5 intervenciones) el 18/01/2022 10:04:56
Al final desinstalé phpExcel y lo ohice con PhpSpreadsheet, que está más actualizado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar