2

我正在使用 csvhelper 将数据写入 csv 文件。我正在使用 C# 和 VS2010。我想写的对象是类型的复杂数据类型对象Dictionary< long,List<HistoricalProfile>>

下面是我用来将数据写入 csv 文件的代码:

Dictionary<long, List<HistoricalProfile>> profiles 
    = historicalDataGateway.GetAllProfiles(); 

var fileName = CSVFileName + ".csv";
CsvWriter writer = new CsvWriter(new StreamWriter(fileName));

foreach (var items in profiles.Values)    
{
    writer.WriteRecords(items);
}

writer.Dispose();

当它第二次循环时出现错误

标题记录已经写入。你不能多写一次。

你能告诉我我在这里做错了什么吗?我的最终目标是拥有一个包含大量记录列表的单个 csv 文件。

提前致谢!

4

2 回答 2

2

你见过这个库http://www.filehelpers.net/这使得读写 CSV 文件变得非常容易

那么你的代码就是

var profiles = historicalDataGateway.GetAllProfiles();  // should return a list of HistoricalProfile
var engine = new FileHelperEngine<HistoricalProfile>();
// To Write Use:
engine.WriteFile("FileOut.txt", res);
于 2013-04-24T01:00:45.617 回答
-4

我会更底层并自己遍历集合:

var fileName = CSVFileName + ".csv";

var writer = new StreamWriter(fileName);



foreach (var items in profiles.Values)
{
    writer.WriteLine(/*header goes here, if needed*/);
    foreach(var item in items)
    {
        writer.WriteLine(item.property1 +"," +item.propery2...);
    }
}
writer.Close();

如果您想让例程更有用,您可以使用反射来获取您希望写出的属性列表并从那里构建您的记录。

于 2013-04-24T08:30:28.913 回答