web-dev-qa-db-ja.com

PHP generate .xlsx

拡張子が.xlsxのExcelファイルを生成しています

生成する簡単なコードを次に示します

 $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;

しかし、生成されたファイルを開くとエラーが発生します。

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

適切なコードを1時間検索していますが、解決策が見つかりませんでした。

前もって感謝します。

7
angel enanod

ライブラリなしで作成することはできません。これを読んでください PHPExcel Github これはあなたを正しい方向に向けるはずです。

EDIT:PHPExcelは非推奨です。GitHubでも後続のPHPSpreadsheetを使用できます。 PhpSpreadsheet

16
Drew

コンテンツは有効なxlsxコンテンツではありません。コンテンツをコンマ区切り値コンテンツとして送信し、xlsを使用してそれを開きます

提案として、もしあなたがあなたのコンテンツを変更できるなら、あなたはこれを試すことができますか?

$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;
1

ファイルが使用されているExcelのバージョンと互換性がない可能性があります。ファイル拡張子「xlsx」を「xls」に変更してみて、機能するかどうかを確認してください。動作している場合、このファイル拡張子(.xlsx)は使用したExcelのバージョンと互換性がありません。

0
HHG