Excelの普及により、帳票代わりとしてCSV形式で出力したデータをExcelで見ることが多くなりました。
帳票を作成するとなると製造工数が増え、それだけ金額も増加するのですが、CSV出力にすると製造工数も帳票よりは少なく済みデータの分析や加工が出来る為、ユーザからCSV出力を求められることが多々あります。
但し、ExcelでCSV出力データを表示した場合、初期表示の書式設定はExcel側で行うため、予期しない表示がされてしまいます。
注意点を下記に列挙します。
Microsoft Excel は、次の条件に基づいて、セルに組み込みの表示形式を自動的に適用します。
・数値にスラッシュ記号 (/) またはハイフン (-) が含まれている場合は、日付形式に変換されることがあります。
・数値にコロン (:) が含まれているか、または数値の後にスペースと A または P の文字が続いている場合は、時刻形式に変換されることがあります。
・数値に文字の E (大文字または小文字、たとえば 10e5) が含まれているか、または数値に列の幅とフォントに基づいて表示可能な文字数を超える文字が含まれている場合は、その数値が指数表記の形式に変換されることがあります。
・数値の先頭に 0 が含まれている場合、その 0 は削除されます。
http://support.microsoft.com/kb/214233/ja
補足
・数値を引用符で囲んでいても文字列として扱ってはくれません。
・入力した数字が12桁を超えると指数表示される。※12桁以下でも列の幅が狭いと指数表示される。
・15桁しか有効表示されない。12345678901234567 → 12345678901234500 と16桁目以降は丸められる。
・数値に文字の"E"が含まれている場合、指数表示される値として底を10としたときの指数部、約-307から約+307まで。
例 1E307 → 1.00E+307
※1E308以降は、指数部がオーバーフローしているため数値として認識されず文字列として扱われる。
・数値に引用符を付けてカンマ区切りにすると通貨型で表示されるが、小数3桁目は四捨五入され2桁までしか表示されない
"1,234.567" → 1,234.57
・最大行数は、Excel95が16384行、Excel97~2003は65536行、Excel2007は1048576行
・CSVを表示した場合、全ての列は標準の列幅 8.38(72ピクセル)となっている。
■対処方法
・数値型のコードがあった場合、先頭の0を表示したいままにするには、="001" と、"="を付け数値を引用符で囲むと文字列として扱われます。
・数値にEのみが含まれる場合、先頭などに"*"等の数字以外をセットする。
この対処方法はCSV取込を考慮した場合、かえって邪魔になってしまいますので注意が必要です。