ROUTE 3390

備忘録的な用途で書いていますが、どなたかの役に立つ事があれば嬉しいです。

Excel出力時に数値を文字列として表示する方法

Webサイトを作成していると
「データをExcelでダウンロード出来るようにして欲しい」といった要望が多々あります。

そんな時ハマるのがこんなとこ!!

例えばこんなセル

<td>0123456</td>

▼表示すると
123456

Excelって数字だけのデータを見ると自動で先頭の0を消してくれちゃうんですよね〜っていうやつです。
こっちは文字列として表示したいのに。。。

他にも20101101とかいう数字があると「これって日付じゃね?」という具合に勝手に判断して
2010/11/1って表示しちゃったり。。。

そんな悩みもコレで解決♪

<td style='mso-number-format:"\@";'>0123456</td>


まずはプログラムからじゃなくて、Excelで作ってみたわけですよ。
セルの書式設定を文字列にして、そこに「0123456」を入力して、、、HTML形式で保存!!

そしたらCSSで指定していたんですねー。
なんでもっと早く気付けなかったんだろ。。



余談ですが、CSV形式の場合は"0123456"という感じで
ダブルクォーテーションで囲ってあげれば文字列として判断されます。
が、しか〜し!! それをExcelで開こうとすると
「これ数字だけじゃん!0消して表示したほうが喜んでくれるんじゃね?」って感じで
やっぱり123456と表示されます。

でも上部の問題とは別で、データ自体は"0123456"になっているので
セルの書式設定を変えたりすればちゃんと表示されるようになります。