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

如何使用CSV Helper将嵌套字符串列表写入CSV文件?

解决方案:用CsvHelper写入嵌套字符串列表到CSV

你的代码生成空白文件主要有两个原因:

  1. WriteRecord 是为对象类型设计的,无法直接将List<string>的元素解析为CSV列;
  2. 未刷新/关闭StreamWriter,缓冲区内容没有写入磁盘。

下面是两种可行的修复方案:

方案一:手动逐字段写入(推荐)

直接遍历每个Entry的字段,逐个写入后换行,同时用using语句自动管理资源:

var rawDataList = await _siteRepository.GetRawSiteData(siteGuid);
var entries = _siteRepository.GetSiteData(rawDataList);

// using语句会自动释放资源并刷新缓冲区
using var writer = new StreamWriter("YodelTesting.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);

// 可选:写入表头
csv.WriteField("Date");
csv.WriteField("param1");
csv.WriteField("param2");
csv.WriteField("param3");
csv.WriteField("param4");
csv.NextRecord();

// 写入每行数据
foreach (var entry in entries)
{
    foreach (var field in entry)
    {
        csv.WriteField(field);
    }
    csv.NextRecord(); // 写完一行后切换到下一行
}

方案二:利用CsvHelper的WriteRecords结合自定义处理

如果想简化遍历,可以直接使用WriteRecords处理字符串列表集合:

var rawDataList = await _siteRepository.GetRawSiteData(siteGuid);
var entries = _siteRepository.GetSiteData(rawDataList);

using var writer = new StreamWriter("YodelTesting.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);

// 写入表头(可选)
csv.WriteField("Date");
csv.WriteField("param1");
csv.WriteField("param2");
csv.WriteField("param3");
csv.WriteField("param4");
csv.NextRecord();

// 直接写入所有记录
csv.WriteRecords(entries);

关键注意事项

  • 必须确保StreamWriter和CsvWriter被正确释放,using语句是最安全的方式,避免缓冲区数据丢失;
  • 如果你的Entry长度不固定,手动写入的方式更灵活,能适配不同列数的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:29