PHP SYMFONY проблема при открытии экспортированного файла Excel - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь экспортировать мой проигрыватель таблиц mysql в файл Excel с phpspreadsheet. Проблема заключается в том, что при загрузке файла, когда мы открываем файл, в файле появляется страница html (с содержимым Excel). Из-за этого файл поврежден. Наверняка это возврат контроллера, который не работает. Но как это сделать?

Вот контроллер:

* @Route("/export", name="doExport", methods={"POST"})
*/
public function export(Connection $conn, ExportExcel $exportExcel, TrainerRepository $trainerRepository, StaffRepository $staffRepository)
{

  $exportExcel->exportExcel($conn);


  return $this->render('Effectif/home.html.twig', [
   'trainers' => $trainerRepository->findBy(['id'=>228]),
   'staffs' => $staffRepository->findAll()
]);
   }

Изображение проблемы: введите описание изображения здесь Полный код для экспорта находится здесь: http://pastebin.fr/61555

$filename = 'joueurs.xlsx';

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'. $filename);
header('Cache-Control: max-age=0');
$Excel_writer->save('php://output');
    }
}

Пожалуйста, не закрывайте пост.

1 Ответ

0 голосов
/ 20 марта 2020

это работает, в контроллере:

 * @Route("/export", name="doExport", methods={"POST"})
 */
public function export(Connection $conn, ExportExcel $exportExcel, TrainerRepository $trainerRepository, StaffRepository $staffRepository)
{

  $targetPath = $exportExcel->exportExcel($conn);

   $response = new BinaryFileResponse($targetPath);
    return $response;

    }
}

В экспорте службы:

$filename = 'joueurs.xlsx';

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'. $filename);
header('Cache-Control: max-age=0');
$download_dir = '../var/downloads/';
$targetPath = $download_dir.$filename;
$Excel_writer->save($targetPath);
return $targetPath;
    }
}
?>
...