web-dev-qa-db-ja.com

ExcelでCSVファイルの引用符と区切り文字をエスケープする

;を区切り文字として使用して、ExcelにCSVファイルをインポートしようとしましたが、一部の列には;および/または引用符が含まれています。

私の問題は:特定の文字列の区切り文字を無視するために二重引用符を使用できますが、文字列内に二重引用符がある場合、最初の二重引用符までの区切り文字は無視されますが、その後は無視されません。それが明確かどうかはわかりませんが、説明するのはそれほど簡単ではありません。

私は例で説明しようとします:

この文字列this is a;testがあるとします。区切り文字を無視するために、文字列を二重引用符で囲みます=>機能します。

この文字列に区切り文字と二重引用符が含まれている場合:私のトリックはもう機能しません。たとえば、文字列this; is" a;testがある場合:文字列を囲む二重引用符を追加すると、最初の部分の区切り文字が無視されます(this; isの部分の区切り文字は正しく無視されますが、後に二重引用符があるため、 Excelはa;test部分の次の区切り文字を無視しません。

できる限り明確になるように最善を尽くしましたが、何が問題なのか理解していただければ幸いです。

7
Whin3

Excelは、csvファイル内の引用符で囲まれた文字列を読み取るときに、二重引用符( "")のすべてのペアを単一の二重引用符( ")で解釈します。

したがって、"this; is"" a;test"this; is" a;testを含む1つのセルに変換されます

したがって、文字列内のすべての二重引用符を二重引用符のペアで置き換えます。

ExcelはCSVとしてエクスポートするときにこのプロセスを逆にします。

ここにCSVがあります

a,b,c,d,e
"""test1""",""",te"st2,"test,3",test"4,test5

そして、これはExcelにインポートした後の様子です:

enter image description here

22
Ken