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

使用CsvHelper时如何指定正确的行终止符?

CsvHelper生成CSV行终止符失效、内容挤成一行的解决办法

你的问题核心是:调用WriteHeader和WriteRecord后没有主动触发换行操作,导致所有内容拼接在同一行里——NewLine配置本身是生效的,只是你没让CsvHelper执行换行动作。

解决方法

有两种修改方式:

方式1:手动添加换行操作

在写完表头和每条记录后,调用csv.NextRecord();,它会自动使用你配置的\r\n作为行终止符:

static void Main(string[] args)
{
    string filename1 = @"d:\temp\testfile1.csv";

    var records = new List<Foo> {
        new Foo { Id = 1, Name = "one" },
        new Foo { Id = 2, Name = "two" },
        new Foo { Id = 3, Name = "    \nthree\n  " },
        new Foo { Id = 4, Name = "four" }
    };

    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        WhiteSpaceChars = [' ', '\t'],
        NewLine = "\r\n"
    };

    int rowcount = 0;
    
    using (var writer = new StreamWriter(filename1,false))
    using (var csv = new CsvWriter(writer, config))
    {
        csv.WriteHeader<Foo>();
        csv.NextRecord(); // 写完表头后换行
        foreach (var item in records)
        {
            item.row = ++rowcount;
            csv.WriteRecord<Foo>(item);
            csv.NextRecord(); // 写完每条记录后换行
        }
    }
}

方式2:使用WriteRecords简化代码

WriteRecords方法会自动处理每条记录的换行逻辑,无需手动调用NextRecord:

static void Main(string[] args)
{
    string filename1 = @"d:\temp\testfile1.csv";

    var records = new List<Foo> {
        new Foo { Id = 1, Name = "one" },
        new Foo { Id = 2, Name = "two" },
        new Foo { Id = 3, Name = "    \nthree\n  " },
        new Foo { Id = 4, Name = "four" }
    };

    // 先给记录赋值row字段
    int rowcount = 0;
    foreach (var item in records)
    {
        item.row = ++rowcount;
    }

    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        WhiteSpaceChars = [' ', '\t'],
        NewLine = "\r\n"
    };
    
    using (var writer = new StreamWriter(filename1,false))
    using (var csv = new CsvWriter(writer, config))
    {
        csv.WriteHeader<Foo>();
        csv.NextRecord(); // 表头后换行
        csv.WriteRecords(records); // 自动写入所有记录并换行
    }
}

效果验证

修改后生成的CSV会完全符合你的预期格式:

Id,Name,row
1,one,1
2,two,2
3,"    
three
  ",3
4,four,4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:51:05