PHP
Excel
laravel
PHPExcel
laravel5

LaravelExcelの2系を使っていてセル関数が計算されなくなっちゃった

結論

いきなり結論から書くと、LaravelExcelのconfigファイル

config/excel.php
/*
|--------------------------------------------------------------------------
| Pre-calculate formulas during export
|--------------------------------------------------------------------------
*/
'calculate'                   => false,

これを true とする事で解決。セル関数が計算されるようになりました。

PHPExcelを直接つかっている場合は PHPExcel/Classes/PHPExcel/Writer/Abstract.php に
preCalculateFormulasプロパティを変更するためのメソッドが用意されているので
これを利用すると良いと思います。
https://github.com/PHPOffice/PHPExcel/blob/1.8/Classes/PHPExcel/Writer/Abstract.php#L110

LaravelExcelのバージョン

2.1.xx

2系はPHPExcelのラッパーになっていて
3系はPHPSpreadsheetのラッパーになっているみたいです。

PHPExcelは開発終了していることもあって LaravelExcelの2系も2018年5月15日にEOLを迎えるようです。
https://github.com/Maatwebsite/Laravel-Excel

ケース

Laravelを使ったWebサイトで、雛形となるExcelシートに値を埋めてダウンロードする機能がありました。
Excelシートにはセル関数もあって、プログラムがセットした値を元に集計値とか出るようになっていました。

症状

ある日を境にセル関数が計算されなくなってしまいました。
ダウンロードしたエクセルを開くとセル関数が消えているわけでもないのに、計算されていないのです。
セル関数が消えてしまっているわけではなく、対象のセルを一度「編集状態」にするとしっかり計算される状況。
なんでやねん。
Excelの計算方式も「自動」になっているのに。。

原因

Office365のバージョンアップが影響している模様で
Twiiterとか見てるとちらほら困っている人がいるようですね。

こちらの記事でも紹介されていました。
https://qiita.com/makasn/items/98b4995266661ec1659f
https://qiita.com/no22@github/items/3401b10d2e389b9ed55e