CsvHelper:将List <string>写入CSV

问题描述

我想知道如何使用CsvHelper将列表写入CSV。我看了here

我在CSV类中具有以下属性

public class CSV
{
    public int? Id { get; set; }
    public List<string> Header1 { get; set; }
    public string Header2 { get; set; }
    public string Header3 { get; set; }
    public string Header4 { get; set; }
    public long? Header5 { get; set; }
    public long? Header6 { get; set; }
    public long? Header7 { get; set; }
    public string Header8 { get; set; }
    public List<string> Header9 { get; set; }
    public List<string> Header10 { get; set; }
    public List<string> Header11 { get; set; }
}

写入CSV

var records = new List<CSV>
{
    new CSV { Header1 = new List<string>{ "value1","value2" } }
};

using (var writer = new StreamWriter("path\\to\\file.csv"))
using (var csv = new CsvWriter(writer,CultureInfo.InvariantCulture))
{
    csv.WriteRecords(records);
}

最终结果应该像这样

Header1
value1,value2

任何帮助将不胜感激。

解决方法

我猜您正在寻找类似的东西。这将从pip install jupyter==5.0.0 列表中创建一个逗号分隔的字符串。

Header1

为您提供

的输出
public class Program
{
    static void Main(string[] args)
    {        
        var records = new List<CSV>
        {
            new CSV { Id = 1,Header1 = new List<string>{ "value1","value2" } }
        };

        using (var csv = new CsvWriter(Console.Out,CultureInfo.InvariantCulture))
        {
            csv.Configuration.RegisterClassMap<CSVMap>();
            csv.WriteRecords(records);
        }

        Console.ReadKey();
    }
}

public class CSVMap : ClassMap<CSV>
{
    public CSVMap()
    {
        AutoMap(CultureInfo.InvariantCulture);
        Map(m => m.Header1).ConvertUsing(row => string.Join(",",row.Header1)).Index(0);
    }
}

public class CSV
{
    public int? Id { get; set; }
    public List<string> Header1 { get; set; }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...