web-dev-qa-db-fra.com

PHP générer .xlsx

Je génère un fichier Excel avec l'extension .xlsx

Voici mon code simple à générer

 $file = "test.xlsx";
 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
 header('Content-Disposition: attachment; filename='.$file);
 $content = "Col1\tCol2\tCol3\t\n";
 $content .= "test1\ttest1\ttest3\t\n";
 $content .= "testtest1\ttesttest2\ttesttest3\t\n";
 echo $content;

Mais je reçois une erreur lorsque j'ouvre le fichier généré.

Excel cannot open the file 'test.xlsx' because the file format or file extension is not valid. 

Je cherchais le bon code pendant 1 heure, mais je n'ai pas trouvé la solution.

Merci d'avance.

5
angel enanod

Vous ne pourrez pas en créer un seul sans une bibliothèque. Ayez une lecture de ce PHPExcel Github qui devrait vous diriger dans la bonne direction.

EDIT: PHPExcel est DEPRECATED, vous pouvez utiliser son success PHPSpreadsheet sur GitHub. PhpSpreadsheet

12
Drew

Le contenu n'est pas un contenu xlsx valide. Essayez d’envoyer votre contenu sous forme de contenu séparé par des virgules et utilisez xls pour l’ouvrir.

À titre de suggestion, si vous pouvez modifier votre contenu, vous pouvez peut-être essayer?

$file = "test.csv";
 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
 header('Content-Disposition: attachment; filename='.$file);
 $content = "Col1,Col2,Col3\n";
 $content .= "test1,test1,test3\n";
 $content .= "testtest,ttesttest2,testtest3\n";
 echo $content;
2
Trudeau Fernandes

Le fichier n’est peut-être pas compatible avec la version d’Excel utilisée . Essayez de modifier votre extension de fichier 'xlsx' en 'xls et vérifiez si cela fonctionne ou non . Si cela fonctionne, alors cette extension de fichier (. xlsx) n'est pas compatible avec la version d'Excel que vous avez utilisée.

0
HHG