- PHP 5.6
- Laravel 5.4
- Laravel Excel 2.1
Laravel Excelを利用して、Excel形式でファイルを生成~出力した際に
特定環境下のみで出力されたExcelファイルの数値文字列(12桁)が指数表記されてしまう問題に直面した。
セルの書式を確認したところ、「標準」
となっており、
またExcelの仕様を調べたところ、12桁以上の数字は指数表記されてしまうとのことだった。
そこで、対象の数値文字列を「文字列」
として出力する必要があったため、調べたところ、
以下の記述が必要であるというものを見つけた。
// キーで指定された列の書式を「文字列」へ変更
$sheet->setColumnFormat(["A" => "@"]);
こちらを記述した上で試したところ、確かにセルの書式は「文字列」に変更されているが、
にもかかわらずセルの値は指数表記されたままであった。
さらに調べたところ、Laravel Excelではセルの書式設定を無視して書き込みが行われる設定があるようだった。
row()の第3引数 $explicit
がdefaultでfalseに指定されているため、
第3引数にtrueを渡すことで明示的に数値文字列を文字列として出力できるようになった
$sheet->row($targetRow, $values, true);