当前位置: 首页 > 知识库问答 >
问题:

导出到CSV-如何写入包含逗号的值?c#[重复]

姜煌
2023-03-14

我目前有一个字符串生成器,用于导出到csv文件。CSV文件中导出的值在somw值中包含逗号。

有时,数据包含一个“,”导致其生成错误。

public string ExportActionMapAsCsv()
    {
        StringBuilder builder = new StringBuilder(",");
        List<EggEmbryoActivity> actions = GetActions();
        List<EggStatusActionMap> actionMaps = GetActionMaps();

        builder.AppendLine(string.Join(",", actions.Select(x => x.Title)));

        foreach (EggStatusActionMap actionMap in actionMaps)
        {
            builder.Append(actionMap.StatusDescription);
            builder.Append(",");
            builder.AppendLine(string.Join(",", actionMap.ActionMaskAsBinary.PadLeft(actions.Count, '0').ToCharArray()));
        }

        return builder.ToString();
    }

这会生成导出,但如何在一列中显示带有逗号的数据

共有2个答案

全鸿晖
2023-03-14

需要在字符串中添加引号,以便使用逗号

     foreach (EggStatusActionMap actionMap in actionMaps)
     {
         builder.Append("\"" + neutralizeInput(actionMap.StatusDescription) + "\"");
         builder.Append(",");
         builder.AppendLine("\"" + neutralizeInput(string.Join(",", actionMap.ActionMaskAsBinary.PadLeft(actions.Count, '0').ToCharArray())) + "\"");
     }

     private string neutralizeInput(string input){
         return input.replace("\"", "\"\"")
     }
桂宏旷
2023-03-14

我非常倾向于创建一个将字符串转换为有效CSV字段的扩展方法。

如果字段包含逗号或双引号,则必须用双引号括起来,并且任何双引号都必须在字符串中重复。

下面是扩展方法:

public static class Ex
{
    public static string ToCsvSafeField(this string field) =>
        (field.Contains(',') || field.Contains('"'))
            ? $"\"{field.Replace("\"", "\"\"")}\""
            : field;
}

然后我会像这样重写代码:

foreach (EggStatusActionMap actionMap in actionMaps)
{
    var items =
        actionMap
            .ActionMaskAsBinary
            .PadLeft(actions.Count, '0')
            .ToCharArray()
            .Select(x => x.ToString().ToCsvSafeField())
            .StartWith(actionMap.StatusDescription.ToCsvSafeField());
            
    builder.AppendLine(string.Join(",", items));
}
 类似资料:
  • 问题内容: 我有一些特殊字符的字符串。目的是检索每行的String [](分隔)。您可以使用特殊字符“,在其中可以使用/ n和, 您会看到“ /”中有您/ n。 任何可以帮助我解析此。 谢谢 __更多说明 与主刺我需要分开这些 问题是:对于Julie,KameL,Titi ,在KameL和Titi之间存在换行符/ n,或者在Time,tomy,tony,tini之间存在类似的换行问题,或者 在to

  • 问题内容: 我有以下类型的字符串 我想将字符串拆分为每个逗号的数组,但仅将单引号之外的逗号分隔。 我想不出正确的正则表达式进行拆分… 会给我 但结果应该是: 有什么跨浏览器解决方案? 问题答案: 免责声明 以下答案仅适用于一种非常特定的CSV格式。正如DG在评论中正确指出的那样,此解决方案不适合RFC 4180定义的CSV,也不适合MSExcel格式。此解决方案仅演示了如何解析一个(非标准)CSV

  • 我一直在尝试将csv文件(包含空字段)导入数据库,方法是使用文件选择器选择该文件。使用filechooser很重要,因为它是学校使用的一个程序,他们希望能够通过导入自己拥有的excel/csv文件,每年导入新的学生记录。每当我运行下面给出的代码时,都会出现以下错误: 我想问题是显而易见的。我如何使它在没有错误的情况下工作? 进口商类: 按下导入按钮时的GUI代码: 存储库中的代码: 我尝试以这种方

  • 我正试图找到一种更好的方法将数据写入csv文件。现在,每个循环迭代都会将标题和数据附加到文件中,如下所示 我想修改我的逻辑,以便我只得到像这样的数据。 任何关于我可以改变的建议都非常感谢。谢啦

  • 我需要解析一个一列的CSV文件,它不仅有额外的逗号,而且一些名称还包括额外的引号。我已经看过了,并阅读了之前的其他问题,最好的答案之一是阿钦蒂亚·杰哈的答案。然而,这种解决方案似乎在我的情况下不起作用。一个例子是这个名字 正在打印为: 它在正确的地方分裂,并且正在处理额外的逗号,但它没有击中额外的引号,并且现在也在那里分裂,所以

  • 问题内容: 我正在尝试使用csv文件读取文件,但某些字段是包含逗号的字符串。字符串用引号引起来,但是numpy不能将引号识别为定义了单个字符串。例如,使用“ t.csv”中的数据: 编码 产生错误: ValueError:检测到一些错误!第2行(获得4列而不是3列) 我正在寻找的数据结构是: 查看文档,我看不到任何解决方案。有没有办法用numpy做到这一点,或者我只需要使用模块读入数据,然后将其转