Csv出力時のダブルクオートについて

こんにちは。

データテーブルをCSVファイルに出力するとき、任意の項目のみダブルクオートで囲んで出力したいです。(“aaa”,111,“bbb”,…)

CSVに書き込む(WriteCsvFile)アクティビティではそれらしいオプションが見当たらず、
普通に出力するとダブルクオートがない状態(aaa,111,bbb…)となります。

そこで、ForEachRowの繰り返しのなかで1項目ずつ編集することを試みたのですが、

string = row.Item(0).ToString
row.Item(0)=string.Concat(Chr(34), string, Chr(34))

上記のように編集してCSV出力したところ、なぜかダブルクオートが3個連続で出てしまいます。

“”“aaa”"",111,""“bbb”""…

Chr(34)を文字列("""")にしても同じ結果となります。

解決方法をご存じの方いらっしゃいましたら、教えていただきたいです。
よろしくお願いいたします。

こんにちは

CSVは各種方言がありますが、特殊な文字が含まれる場合はダブルクォートで囲む、
ダブルクォートで囲まれた文字列中にダブルクォートを記述する場合はダブルクォートを
2つ重ねる
という感じになるので
結果上記のような文字列になると思います。

ちなみにこれを実現したい目的は何になりますでしょうか?
単純に囲むだけですと、CSVとして問題になるケースもあるかもしれませんので。

1 Like

たびたびすみません

ちなみにですが、データに特殊な文字が含まれない前提で、すべての項目をダブルクォートで
囲んでよいなら、単純な文字列置換で実現できます。

img20200609-2

置換の部分の式は以下です。

""""+strData.Trim.Replace(",",""",""").Replace(vbcrlf,""""+vbcrlf+"""")+""""
1 Like

ご回答ありがとうございます。
3個連続で出る理由が理解できました。(3個というより、項目を囲むためのダブルクオートとダブルクオートを文字列として扱うためのダブルクオート2つだったのですね)

目的ですが、既存でAccessで出力しているCSVファイルをUiPathで出力したいというものです。
既存のCSVファイルには特殊文字は含まれませんが、数字以外の文字が入る項目はダブルクォートで囲まれているので、既存に合わせるために実現したいです。

文字列置換の式、ありがとうございます!
やってみます。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.