ニュース

PhpSpreadsheetのフォーマット貼り付けに半日ハマった件

excel出力で数値を張り付ける際に、小数点以下3桁にそろえて出力する必要があった。テンプレートのexcelファイルを読み込んだ後phpで拾ってきたデータを張り付けるということをしていた。

フォーマット関数が適用されない

修正前の取込は下のように桁がそろっていない箇所があった。

php側で数値をフォーマットするため、number_format( (合計重量の値), 3); として再度出力。

( ^ω^)・・・一部フォーマットされない。なんか左寄せになってるし・・・。

number_format( (合計重量の値), 3);をした後の値をphpで確認することに。

どうやらnumber_formatはちゃんと動いているようだ。となると貼り付け段階で問題があることに・・・。

ちなみにsprintf関数を使っても同じ現象が起こり悪戦苦闘していたところ、同僚のNさんから

「phpをいじらずにexcelのテンプレートファイルの方をセルの書式設定で変更すればよいのでは?」とのアドバイス。

( ^ω^)・・・セルの・・・しょしき・・・せってい・・・?

終わり

※追記:なおphpで設定する場合は、sprintfなどでフォーマットを強制せずに

    $sheet->getStyle((指定のセル))->getNumberFormat()->setFormatCode('0.000');

    のように、単にフォーマットコードを使用するのが良いみたいです。