web-dev-qa-db-fra.com

Écrire dans un fichier à l'aide de CsvHelper en C #

J'ai essayé d'écrire dans un fichier CSV en utilisant CsvHelper en C #.
Ceci est le lien vers la bibliothèque http://joshclose.github.io/CsvHelper/

J'ai utilisé le code sur le site Web.

Voici mon code:

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

Il écrit seulement une partie des données dans le fichier csv.
Les dernières lignes étaient manquantes.
Pourriez-vous s'il vous plaît aider à ce sujet.

20
Nayana Priyankara

quand, j'ai ajouté ce code après que le code de boucle fonctionne bien

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

Le problème est survenu car je n'ai pas fermé la connexion

8
Nayana Priyankara

Vous devez vider le flux. L'instruction Using sera vidée lorsqu'elle sera hors de portée.

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

En supposant que writer est une sorte de TextWriter, vous devez ajouter un appel pour vider le contenu avant de fermer le rédacteur:

writer.Flush()

Si les dernières lignes sont manquantes, c'est la raison la plus probable.

8
Markus

Ajout à la réponse de @ greg:

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