You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何将字符串添加到CSV新列而非新行?技术求助

解决CSV添加新列而非新行的问题

看起来你现在的核心问题是:你把加密后的字符串作为新的列表元素添加到output里了,这在CSV里就会表现为新行;而你真正需要的是把这个字符串追加到每一行的末尾,作为新的列。

为什么你之前的尝试无效?

  • output.Add(,,,stringInQuestion); 是语法错误,C#里不能直接这么写字符串,必须把逗号和内容拼接成完整的行字符串。
  • output.Add(output + stringInQuestion); 这里你是把List<string>对象本身的ToString()结果(默认是System.Collections.Generic.List1[System.String]`)和加密串拼接,然后添加成新行,完全不符合预期。

分两种场景给你解决方案:

场景1:每一行对应独立的加密值(比如对当前行内容加密)

如果你的加密是针对单个联系人的行数据,那直接在生成每一行的时候就把加密值拼进去:

var output = new List<string>();
foreach (var contact in contacts)
{
    // 生成基础的四列内容
    var baseRow = $"{contact.FirstName},{contact.LastName},{contact.EmailAddress},{contact.FirstName}-{contact.EmailAddress}-{contact.LastName}";
    // 这里替换成你实际的加密逻辑,针对当前行生成加密串
    var encryptedTextAsBase64 = YourEncryptionMethod(baseRow);
    // 拼接成包含新列的完整行
    var fullRow = $"{baseRow},{encryptedTextAsBase64}";
    output.Add(fullRow);
}

场景2:所有行共享同一个加密值(比如加密整个CSV的内容)

如果你的加密是针对整个CSV的完整内容,那先完成基础行的生成,加密后再把加密值追加到每一行末尾:

var output = new List<string>();
foreach (var contact in contacts)
{
    output.Add($"{contact.FirstName},{contact.LastName},{contact.EmailAddress},{contact.FirstName}-{contact.EmailAddress}-{contact.LastName}");
}

// 先拼接所有行成完整的CSV文本,再加密
var fullCsv = string.Join(Environment.NewLine, output);
var encryptedTextAsBase64 = YourFullEncryptionMethod(fullCsv);

// 遍历原列表,给每一行添加加密列
var finalOutput = output.Select(row => $"{row},{encryptedTextAsBase64}").ToList();

这样处理后,finalOutput里的每一行都会包含你的加密串作为最后一列,导出成CSV后在Excel里就会显示为你期望的多列格式,而不是新行。

内容的提问来源于stack exchange,提问作者T. Golightly.work

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:42:47