萌え指向プログラミング言語「萌香」のBlog
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 Microsoft Excelで使用するためのCSV形式のファイルを作成しようとしたらはまりました。 現象改行を含んだデータを1セルに入れるため、 ダブルクォーテーションで囲んだのですが、 中に入っている改行コードがCSV行末の改行と認識されてしまい 列がめちゃくちゃになってしまいました。 ダブルクォーテーションに関わるExcelの挙動何が原因だったかと言うと、 自分はいつもCSVファイルを書く時カンマの後ろにスペースを入れるのですが、 (そのため以下のように文字列前後のスペースを取り除く) Excel的にはそういうのはだめでスペースから始まる文字列と みなされてしまいました。 で、おまけにExcelは先頭にないダブルクォーテーションは制御記号ではなく ただの文字として扱ってしまい、結局ダブルクォーテーションで囲まれた改行は CSV的にエスケープされることなく行の終端記号として扱われてしまいました。 普段書いてたプログラム(in Ruby)row = line.split(',').map {|elm| elm.strip} ExcelのCSVファイル中の改行Excelはセル内の改行にはLFを行の終端にはCR + LFを使っていました。 これは、さすがにExcelがよきに計らってくれるかな。 とりあえず動くので検証はめんどい。 エディタでちょいちょいといかないかしら。 行終端がCR + LFなのは RFC4180的に妥当なのですが、 なんでセル内の改行はLFだけなんだろう。 同じように出力しようとするとちょっとめんどい まとめとりあえず、Excelで使うためのCSVファイルを作成する上での注意点を Excelとは直接関係ない(RFCで定められたCSVファイル一般のことも含めて) まとめると。
ちなみに使ったExcelはExcel2000 for Windows。 最新のExcelならUTF-8は使えるかな ? リンク雑感今日初めてCSVファイルフォーマットのRFCを読みました。 いろいろ、細かい点が知らなくてためになりました。 でもですよ、カンマの後ろにスペースは付けたいし、 人間に見やすいようにカンマの位置というか文字列の開始位置を そろえたいじゃないですか。 まぁ、そんな理由でmustでなくshould not be ignoredなのだと思います。 だからといって、自分一人で使うからいいやと自由な形式で プログラムを書いたりするとあとではまることになるんだな。きっと。 PR |
カレンダー
カテゴリー
フリーエリア
最新CM
[11/30 Lehar9296
]
[11/19 Bihler7840
]
[04/09 pavelvolinkins]
最新記事
(05/04)
(03/13)
(02/18)
(10/30)
(04/17)
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
最古記事
(12/25)
(01/10)
(01/17)
(02/14)
(04/17)
アクセス解析
|