CSV形式でデータを出力するときのバッドノウハウ


ExcelでA1セルにIDとか書いてはいけない件
http://d.hatena.ne.jp/yaneurao/20121206#p4


上記の記事がtwitterで話題になっているようなので少し補足します。


エラーメッセージとして、以下のダイアログが出ますが、「はい」→「OK」と押せば開くことは出来ます。

いまどき誰もSYLK形式なんて知らないでしょうから、こんなダイアログ出されましても…という部分を私は問題にしています。


また、CSV形式はダブルクォーテーション記号( " )で囲むことにより、エスケープする機能がありますから、IDという文字列の両端にこの記号をつけておけばこのダイアログが出るのは回避できます。(要するにバイナリで見たときに1バイト目に "I" 、2バイト目に "D" という文字列が来ていなければこのダイアログは出ません。)


そこで、CSV形式で出力するプログラムを書く場合、最初のデータ(A1セルに相当する部分)が ID という文字列で始まるならその両端にダブルクォーテーション記号を付与するというバッドノウハウが必要になるわけです。


例) IDABC,123 → "IDABC",123


このように、なかなか一筋縄ではいかないのがCSV形式なんです。