CSV仕様 これは私がさまざまな方法で実装されていると思うものです...基本的には、人気があることを考えるとイライラするのは、半分しか仕様が定められていないようです。
CSVのセル内に改行を含めるには、セルを折り返すか、改行をエスケープする必要があります。リンクされたドキュメントから、これを行うには3つの方法があり、プログラムによって処理方法が異なることがわかります。
- Excelは、セル全体を二重引用符で囲みます。セルは、二重引用符で囲まれている限り、セル内に(エスケープされていない)改行文字を含めることができ、単一のセルと見なすことができます(Excelスタイルを使用する必要があることに注意してください)。セルの内容内での二重引用符のエスケープ)
- 他のプログラムでは、文字の前に1つの円記号が挿入されるため、
\
で終わる行が挿入されます。 行の終わりとは見なされませんが、セル内の改行文字と見なされます。セルの前に円記号文字が付いている限り、セル内にエスケープされていない改行文字を含めることができます。 - 他の人は、改行をCスタイルの文字エスケープ、実際の文字シーケンス
\n
に置き換えます。 または\r\n
。この場合、セルは改行文字を完全にエスケープしています。
この問題は、制御文字(およびその他のコンテンツ("
など)をエスケープする必要がある可能性があるため、さらに複雑になります。 #1、および\
#2 + 3)およびさまざまなスタイルのエスケープ(たとえば、埋め込まれた引用符は次のようにエスケープできます:double double quote ""
または円記号-二重引用符\"
)
私のアドバイス :複数行とキーエスケープ文字を含むOpenOfficeドキュメントを生成し、OpenOfficeがCSV
を生成する方法を確認します ファイル。そこから、セル内の改行に使用する上記の方法と、エスケープする方法を決定できます。
スタイル1の例(Excel):
#num,str,num
1,"Hello
World",1990
2,"Yes",1991
スタイル2の例:
#num,str,num
1,Hello \
Word,1990
2,Yes,1991
スタイル3の例:
#num,str,num
1,Hello \nWorld,1990
2,Yes,1991