【问题标题】:comma(,) separating string while exporting to XL in CSV format c#以 CSV 格式导出到 EXCEL 时用逗号(,)分隔的字符串 c#
【发布时间】:2012-11-02 07:36:34
【问题描述】:

我是 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 中的输出是:

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

但我希望它是:

约翰,德洛雷斯“萨顿”

【问题讨论】:

  • 为什么不将数据导出为管道分隔或制表符分隔来解决此问题?

标签: c# export-to-csv string.format


【解决方案1】:

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

"John, Delores ""Sutton"""

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

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

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

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

精明?

【讨论】:

  • 太棒了,太完美了!非常感谢您的快速回复。我没想到这么快。你们是最棒的.. :)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多