2007年12月25日
Excelの吐くCSVの特徴?
CSVをホゲホゲするツールを書いてると言っておりましたが…わたしまったく気づいてなかったのですが、Excel(2003のみ確認済)の吐くCSVに以下のような特徴があることを社内の人に教えてもらいました
Excelのセルに改行が入っているケース、CSVに変換するとフィールド内に改行が入っているケースです。CSVの改行は、CRLFと一応決まっているのですが…なんと、フィールド内の改行はLFのみなんです
わたしが使っているエディタで見ると全くわかりませんでした~そこで、バイナリエディタでダンプを見ると確かにLFだけなんです。知りませんでしたよぉ。
一応、CSVは後付けですがRFC4180(日本語訳)で定義されていて、その中のABNF表記を見ると…。
file = [header CRLF] record *(CRLF record) [CRLF]
header = name *(COMMA name)
record = field *(COMMA field)
name = field
field = (escaped / non-escaped)
escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
non-escaped = *TEXTDATA
COMMA = %x2C
CR = %x0D ;as per section 6.1 of RFC 2234 [2]
DQUOTE = %x22 ;as per section 6.1 of RFC 2234 [2]
LF = %x0A ;as per section 6.1 of RFC 2234 [2]
CRLF = CR LF ;as per section 6.1 of RFC 2234 [2]
TEXTDATA = %x20-21 / %x23-2B / %x2D-7E
確かに問題はないようですね ![]()
この変な
Excel出力仕様おかげでフィールド内改行とレコード終端の改行の区別が簡単に実装ができそうです
と言うか、Microsoftはわざとそのように実装してるんですかね
所詮CSVのRFCって、後付けだし
ですもんね。
あぁ、また運用に流されて…RFC的にダメなものを作ってしまった
TrackBack URL :
