Bonjour,
Pour la création d'une application j'utilise "PhpSpreadSheet", la seconde version de PHPExcel, l'éditeur de fichier Excel en PHP, après avoir écrit dans un fichier je souhaite le télécharger et c'est ici que je bloque.
J'ai utilisé la fonction header() plusieurs fois, en testant de nombreuses docs et réponses de topic mais rien ne va toujours le même message d'erreur quand j'ouvre le fichier téléchargé : "Impossible d'ouvrir le fichier 'XXX' car son format ou son extension n'est pas valide."
Pourtant le fichier qui se sauvegarde précédemment dans le dossier de l'application grâce au "save()", qui est le fichier modifier que j'aimerai télécharger, s'ouvre parfaitement, avec les modifications.
Je ne comprend donc pas, et j'espère que vous sauriez m'aider !
Je précise que j'ai aussi essayé d'autre fonction tel que readfile() et que le résultat est le même...
Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php if(isset($erreur)){echo $erreur.'<br>';} else{ echo '> Traitement en cours...'; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($dir.$name); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue(''.$j.'9', $emb_ext); $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $writer->save($dir.$inputFileName); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$inputFileName.'"'); header('Cache-Control: max-age=0'); $writer->save('php://output'); exit; } ?>
Pour éviter des réponses inutiles, je précise que j'ai aussi utilisé d'autre code qui ne marche pas non plus comme celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php if(isset($erreur)){echo $erreur.'<br>';} else{ echo '> Traitement en cours...'; $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($dir.$name); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue(''.$j.'9', $emb_ext); $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $writer->save($dir.$inputFileName); $size = filesize($dir.$inputFileName); header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="' . $inputFileName . '"'); header('Content-Length: '. $size); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Pragma: no-cache'); readfile($dir . $inputFileName); } ?>
Merci d'avance !
Partager