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

2回目にループするとエラーが発生します

ヘッダー レコードは既に書き込まれています。何度も書くことはできません。

ここで私が間違っていることを教えてください。私の最終的な目標は、レコードの膨大なリストを含む 1 つの 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 に答える