2

我是 C# 的初学者,我正在将一些数据以 CSV 格式导出到 XL 表。我的数据包含一个全名列,其中数据类似于(John,Delores “Sutton”)。当我将其导出到 XL 时,它会将数据分成两列(或选项卡),例如 Tab1:John 和 Tab2:Delores “Sutton”,因为逗号(,)。我想

如果我使用下面的代码

string F1 = base.GetColumnText(column, columnValue); //ex: John, Delores \"Sutton\""
string F2 = string.Format("\"{0}\"", F1); //ex: "\"John, Delores\"Sutton\"\""
streamWriter.Write(F2); //ex output in XL is: John, Delores Sutton""

XL 中的输出为:

约翰·德洛雷斯·萨顿""

但我希望它为:

约翰·德洛雷斯“萨顿”

4

2 回答 2

1

您需要使用双双引号来表示 CSV 中的双引号,并且所有内容都必须用双引号引起来,因此您的文本输出将如下所示:

"John, Delores ""Sutton"""

因此,您需要在文本上进行查找和替换以将双引号加倍...

F1 = F1.Replace("\"", "\"\"");

然后做你的格式用引号包围文本。

var F2 = string.Format("\"{0}\""), F1);

精明?

于 2012-11-13T20:33:08.323 回答
1

由于逗号用于分隔字段,因此带有逗号的值被解释为两个字段。此类字段必须用引号引起来。因此,包含引号的字段也必须用引号括起来,并且字段中的每个引号都必须加倍。

创建 CSV 文件有许多规则。我编写了一个非常完整的类来读写 CSV 文件,并在我的文章Read and Writing CSV Files in C#中介绍了代码。你可能想检查一下。

于 2012-11-13T20:38:50.103 回答