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

C#如何将JsonString中的数组元素写入Excel(CSV/XLSX)第一列

问题核心原因
  • 包裹字符串用了单引号,不符合要求的双引号规范
  • 用逗号直接拼接元素会被CSV识别为列分隔符,导致内容拆分到多列,无法全部放在A列
  • 没有处理CSV特殊字符转义,若元素包含双引号、逗号会导致整体格式错乱
修正代码(整组内容放A列对应行,符合第1/2行对应两组的要求)
List<string> newLines = new List<string>();
Rooter myDeserializedClass = JsonConvert.DeserializeObject<Rooter>(jsonResponse);

foreach(var alter in myDeserializedClass.wordAlterations)
{
    // 给每个元素包双引号,内部的双引号转义为两个双引号,符合CSV规范
    var quotedItems = alter.alterations.Select(item => $"\"{item.Replace("\"", "\"\"")}\"");
    // 拼接元素,可根据需求把逗号替换为空格、分号等其他分隔符
    var joinedContent = string.Join(",", quotedItems);
    // 整体再包一层双引号,避免内部逗号被识别为列分隔符,保证内容全部落在A列
    newLines.Add($"\"{joinedContent.Replace("\"", "\"\"")}\"");
}

// 如果需要追加内容而非覆盖,可改回AppendAllLines;指定UTF8编码避免乱码
File.WriteAllLines("sample.csv", newLines, Encoding.UTF8);
其他可选场景(每个元素单独占A列一行)

如果需求是第一组的4个元素占A1-A4行,第二组的6个元素占A5-A10行,可使用以下代码:

List<string> newLines = new List<string>();
Rooter myDeserializedClass = JsonConvert.DeserializeObject<Rooter>(jsonResponse);

foreach(var alter in myDeserializedClass.wordAlterations)
{
    foreach(var item in alter.alterations)
    {
        newLines.Add($"\"{item.Replace("\"", "\"\"")}\"");
    }
}

File.WriteAllLines("sample.csv", newLines, Encoding.UTF8);
补充说明

如果需要生成xlsx格式文件,建议引入NPOI或EPPlus库处理,格式控制更灵活,不需要额外处理CSV的转义规则。

内容的提问来源于stack exchange,提问作者roney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:06