web-dev-qa-db-ja.com

C#でCsvHelperを使用してファイルに書き込む

C#でCsvHelperを使用してCSVファイルに書き込もうとしました。
これはライブラリへのリンクです http://joshclose.github.io/CsvHelper/

Webサイトでコードを使用しました。

ここに私のコードがあります:

var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
    csv.WriteRecord(value);
}

データの一部のみをcsvファイルに書き込みます。
最後の行がありませんでした。
これを手伝ってください。

13

ループコードが正常に機能した後にこのコードを追加したとき

var csv = new CsvWriter(writer);
csv.Configuration.Encoding = Encoding.UTF8;
foreach (var value in valuess)
{
     csv.WriteRecord(value);
}
writer.Close();

接続を閉じなかったために問題が発生しました

8

ストリームをフラッシュする必要があります。 Usingステートメントは、スコープ外にあるときにフラッシュします。

using (TextWriter writer = new StreamWriter(@"C:\test.csv", false, System.Text.Encoding.UTF8))
{
    var csv = new CsvWriter(writer);
    csv.WriteRecords(values); // where values implements IEnumerable
}
32
Greg R Taylor

writerが何らかのTextWriterであると仮定すると、ライターを閉じる前に内容をフラッシュする呼び出しを追加する必要があります。

writer.Flush()

最後の行が欠落している場合、これが最も可能性の高い理由です。

8
Markus

@gregの答えに追加:

using (var sr = new StreamWriter(@"C:\out.csv", false, Encoding.UTF8)) {
  using (var csv = new CsvWriter(sr)) {
    csv.WriteRecords(values);
  }
}
0
sobelito