Bonjour à tous,
J'essaye d'utiliser PHPExcel (bibliothèque très complète et robuste de génération/lecture de fichiers Excel) dans CakePHP.
Premier test, je tente une création toute simple d'un fichier mais sans utiliser le framework CakePHP :
include_once('Excel/PHPExcel.php');
$phpExcel = new PHPExcel();
$phpExcel->getActiveSheet()->setTitle("My Sheet");
$phpExcel->setActiveSheetIndex(0);
$phpExcel->getActiveSheet()->setCellValue('A1', 'Hello World!');
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"filename.xls\"");
$objWriter = PHPExcel_IOFactory::createWriter($phpExcel, "Excel5");
$objWriter->save("php://output");
exit;
Au lancement de la page, une pop up apparaît et je peux telecharger le fichier Excel puis lire dedans mon Hello World!.
Second test, je tente de placer ce code dans une vue de CakePHP :
App::import('Vendor', 'PHPExcel', array('file' => 'Excel/PHPExcel.php'));
$phpExcel = new PHPExcel();
$phpExcel->getActiveSheet()->setTitle("My Sheet");
$phpExcel->setActiveSheetIndex(0);
$phpExcel->getActiveSheet()->setCellValue('A1', 'Hello World!');
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"filename.xls\"");
$objWriter = PHPExcel_IOFactory::createWriter($phpExcel, "Excel5");
$objWriter->save("php://output");
exit;
Au lancement de la page, une pop up apparaît, je peux telecharger le fichier Excel mais la lecture pose quelques problèmes. On m'indique que le fichier est certainement corrompu et lorsque je cherche mon Hello World! je tombe sur un paquet de caractères illisibles.
J'ai eu ce problème dans un premier temps sans CakePHP, cela venait du fait que j'écrivais avec un echo avant de générer mon fichier Excel -> la corruption venait de là.
Du coup, j'ai tendance à penser que CakePHP fait foirer la génération du fichier parce qu'il écrit qqc avant de lancer la vue ! (les headers par exemple)
Comment dire au contrôleur que pour telles actions (en l'occurence, celle qui va générer mon fichier Excel), il n'inclut pas le header et le footer comme sur toutes les autres pages ??
Merci à vous :]