laravel-excelというライブラリにて、Excelをエクスポートする処理を行っています。
エクスポートの処理自体はできるのですが、下記のようなエラーがでてしまい、ファイルを開くことができません。エクスポートのファイル形式を'csv'に変更すると、Excelで開くことができます。 ソースについても添付しておきます。
ご助言いただけますと幸いです。よろしくお願いたします。
エラー文
Excel でファイル 'test.xlsx' を開くことができません。ファイル形式またはファイル拡張子が正しくありません。ファイルが破損しておらず、ファイル拡張子とファイル形式が一致していることを確認してください。
$books = User::all()->toArray(); //文字コードの変換 mb_convert_variables('UTF-8','JIS-win',$books); \Excel::create("test", function($excel) use ($books) { // 最初のシート $excel->sheet("first", function($sheet) use ($books) { $sheet->fromArray($books); }); })->download("xlsx");
laravel ver 5.5
os:mac 10.13.13
laravel-excel ver3
https://laravel-excel.maatwebsite.nl/
現状おこなってみたこと
phpSpreadsheetにて、下記exampleソースで行ってみました。publicフォルダに入り、問題なく開くことができました。download用のソースを加えたところ、また上記と同じ結果がでてしまいました。
downloadの部分で問題がありそうな気がします。。よろしくお願いします。
$spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'Hello World !'); $writer = new Xlsx($spreadsheet); $name='hello world.xlsx'; $writer->save($name);
下記ダウンロード部分
header('Content-Type: application/force-download;'); // ファイルサイズを取得し、ダウンロードの進捗を表示 header('Content-Length: '.filesize($filepath)); // ファイルのダウンロード、リネームを指示 header('Content-Disposition: attachment; filename="'.$name.'"'); readfile(public_path($name));