以下のような形で、PhpSpreadSheetでテンプレートを読み込み、出力としていたのですが、
$file = 'テンプレート.xlsx';
$obj = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
$book = $obj->load($file);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filenm .'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($book, 'Xlsx');
$objWriter->save('php://output');
ダウンロードされたエクセルを開くと、以下のメッセージがでるようになってしまいました。
xlsxの一部の内容に問題が見つかりました。可能な限り内容を回復しますか?ブックの発行元が信頼できる場合は、[はい]をクリックしてください。
のエラーメッセージが。
対処法は以下のstack overflowに書かれており、保存後すぐにdie;を入れると壊れなくなります。
最初に英語でまで調べなかったせいで、dieで解決できることに気づきませんでした。
英語力大事・・・
英語力大事・・・
日本語でエラーを調べても、以下のような記事しか見当たらず、テンプレートを2回保存しないように修正して対応した。
早く気づいていれば。
というかPhpSpreadSheetさん。早く直して・・・