EC-CUBEカスタマイズ案件を担当した時のメモ。
顧客一覧などを管理画面からcsvダウンロードしてExcelで開くと、電話番号や郵便番号の頭の0が表示されません。03-0123-0001が3-123-1のようになります。
これはEC-CUBEが悪いのではなくExcelの仕様のようです。csvファイルをテキストエディタで確認すると普通に0が入っていますが、Excelで開くと表示されません。
Excelでも0を表示するように開く方法はあり、普通に開くのではなく「データ」→「外部データの取り込み」→「データの取り込み」からファイルを指定し「テキストファイルウィザード」の3ページ目で電話番号のカラムを「文字列」に指定して開くと意図通りに表示されます。が、やってみるとわかりますが非常に面倒臭く、毎回このようにして開くのは大変です。
そこで対応策を調べて、EC-CUBE側をカスタマイズすることで対策しました。データをダブルクォーテーションで囲み、前にイコールをつけるとExcelが文字列として開いてくれるようです。具体的には、csv内の該当部分のデータが以下のようになります。
……,=”03″,=”0123″,=”0001″,……
EC-CUBE側の変更点は、SC_Helper_CSV.phpのsfArrayToCsv()関数です。終盤に、以下のように追加しました。
if (preg_match("/^0[0-9]+$/", $field )){ $field = '=' . $enclosure . $field . $enclosure; }実際は別条件も足したりしていてちょっと違いますが、だいたいこんな感じです。
誰かの参考になれば幸いです。