このようにセルの値を設定すると
->setCellValue('O' . $currentRow, 12000000000000111702)
また
->setCellValue('O' . $currentRow, "12000000000000111702")
値1.2E+19、つまり12000000000000000000を生成しています。理由を教えてもらえますか?
この値をfloatに変換するのではなく、正確に「そのまま」保持する必要がある場合(PHP intには大きすぎるため)、を使用して値を文字列として明示的に設定する必要があります。
->setCellValueExplicit('O' . $currentRow, "12000000000000111702", PHPExcel_Cell_DataType::TYPE_STRING)
とにかくsetCellValueExplicit()がデフォルトで設定されるため、実際にはPHPExcel_Cell_DataType::TYPE_STRINGを指定する必要はありません。