0

私の質問は、C# の CSV ファイルについてです。フィールドにコンマが含まれている場合、これを 1 つのフィールドとして CSV ファイルにエクスポートするにはどうすればよいですか? Field 2以下のサンプルを参照してください。

フィールド 1|フィールド 2|フィールド 3

10.20|Doe,John|ボックス No 1

私はこのコードを持っています:

//Get indices
indices = DenormalizeIndices(id);
foreach (DataRow row in indices.Tables[0].Rows)
{
 line = null;
  //We're only going to use selected fields
 for (i = 0; i < 3; i++)
 {
  if (line != null)
    line += DELIMITER;
  //Figure out the mapped field name we have defined
  if (i >= INDICES_TO_INCLUDE.Length)
    line += ""; //Nothing to populate
  else
  if (String.IsNullOrEmpty(INDICES_TO_INCLUDE[i]))
    line += "";
  else
    line += "=\"" + row[INDICES_TO_INCLUDE[i]].ToString() + "\"";

ただし、CSV ファイルの上にあるこのコードを使用すると、結果は次のようになり、次のインデックス値が分離されますField2

フィールド 1 | フィールド 2 | フィールド 3 | フィールド4

10.20 | ドウ | ドウ | ジョン | ジョン | ボックス No 1

結果が以下のようになるように、コードに他に何を追加する必要がありますField2か?

フィールド2

ドウ、ジョン

4

3 に答える 3

1

このドキュメントをチェックしてください:

RFC 4180 - コンマ区切り値 (CSV) ファイルの一般的な形式と MIME タイプ

RFC (Requests For Comment) は標準ではありませんが、これはほとんどのアプリが従うものと同じくらい CSV 標準に近いものです。

基本的なルールは、値にカンマ、改行、または二重引用符が含まれている場合は、二重引用符で囲みます。値の二重引用符は、2 つの二重引用符としてエスケープされます。

于 2013-10-07T21:04:29.263 に答える
0

各項目を = で開始したい場合は、外側ではなく引用符の内側に配置する必要があります。そう line += "\"=" + row[INDICES_TO_INCLUDE[i]].ToString() + "\"";

のようなコンテンツを制作するには "=10.20", "=Doe,John","=Box No 1"

これにより、適切に引用された CSV が生成されます。

= を取り除きたいだけかもしれませんが、そもそもなぜそこにあるのかわかりません。

于 2013-10-07T20:50:43.200 に答える