使用CSV助手将集合的集合写入CSV文件

本文关键字:集合 CSV 文件 使用 | 更新日期: 2023-09-27 18:10:31

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

提前感谢!

使用CSV助手将集合的集合写入CSV文件

您见过这个库吗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);

我会更低级,自己遍历集合:

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();

如果你想让这个例程更有用,你可以使用反射来获得你想要写出来的属性列表,并从那里构造你的记录。