【发布时间】:2021-06-17 14:39:47
【问题描述】:
这里和 CsvHelper 的文档中有许多使用 CsvHelper 编写 CSV 的例子。编写课程列表对我没有任何帮助
列表包含这些对象
class Contract
{
public Contract()
{
Id = "None";
Type = "";
FileNames = new List<string>();
}
public string Id { get; set; }
public string Type { get; set; }
public List<String> FileNames { get; set; }
public override string ToString()
{
string result = "Contract:ID " + Id
+ ",Type " + Type
+ ",FileNames ";
foreach (string FileName in FileNames)
{
result = result + FileName + ",";
}
return result;
}
}
这个
public void SaveCsv(string PathCsv)
{
Console.WriteLine("save Contracts to " + PathCsv);
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";",
Encoding = Encoding.UTF8
};
using (var writer = new StreamWriter(PathCsv))
using (var csv = new CsvWriter(writer, config))
{
csv.WriteHeader<Contract>();
foreach (var contract in contracts)
{
csv.WriteRecord<Contract>(contract);
csv.NextRecord();
}
}
}
只带回没有合同列表的标题。如何正确地将合同列表写为 csv?
【问题讨论】:
-
我假设
contracts是List<Contract>? -
From the getting started page 你在写标题后缺少
csv.NextRecord();(csv.WriteHeader<Contract>();)。 -
如果您打算将文件名列表写入 CSV 中的某个字段,您可以向
Contract类添加另一个属性,例如public string Filenames { get => string.Join(";", FileNames); }。 -
@Magnetron 是的,它是 List
-
@nilsK 不幸的是它并没有改变任何东西