使用csv helper将集合集合写入csv文件

时间:2013-04-24 00:55:16

标签: c# csv

我正在使用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文件。

提前致谢!

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:-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();

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