2016-07-27 10 views
-1

Ich suchte herum und jeder sagte immer wieder, der beste Weg, CSV-Dateien in C# zu verarbeiten, ist Filehelpers. Aber ich schaue weiter und ich kann keine umfassende Anleitung zum Anhängen einer CSV-Datei finden. Ich habe diese Klasse:Wie speichert man Daten in einer CSV-Datei mit Hilfe von Dateihelfern?

class FlashCard 
{ 
    public static string Front { get; private set; } 
    public static string Back { get; private set; } 
    public static Difficulty CardDifficulty { get; private set; } 
    public enum Difficulty 
    { 
     easy, 
     medium, 
     hard, 
     very 
    } 
    public void Flashcard(string front, string back, Difficulty Difficulty) 
    { 
     Front = front; 
     Back = back; 
     CardDifficulty = Difficulty; 
    } 


} 

Und ich möchte Instanzen davon in einer CSV-Datei speichern. Aber wie?

+0

Sie können die Linq2Csv-Bibliothek verwenden, die eine umfassende Liste von Funktionen zum Behandeln von CSV-Dateien enthält. http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library – Maverick

+0

Sie können entweder das csv-Format von Hand selbst nach dem csv-Schema/Standard erstellen oder eine Bibliothek/ein Framework verwenden, die es für Sie tun können . Sie können online nach Bibliotheken suchen, die das tun. CsvHelper ist mir bewusst. – Nkosi

Antwort

1

Sie müssen bereits eine CSV-Datei haben, dann können Sie diese Datei leicht in Ihre Entitäten (wie FlashCards) konvertieren.

Werfen Sie einen Blick auf schnellen Start http://www.filehelpers.net/quickstart/

Zunächst einmal haben Sie Ihre Klasse mit dem Attribut [DelimitedRecord („“)]

0

So schreiben Sie eine CSV-Datei von Ihrer Klasse mit FileHelpers zu markieren, Karte Ihre Klasse in eine "spec" -Klasse, die die CSV-Datei beschreibt. Etwas wie das.

[DelimitedRecord(",")] 
public class FlashCardCsvRow 
{ 
    public string Front; 
    public string Back; 
    public string CardDifficulty; 
} 

var flashcards = new List<FlashCard>(); // your class above 
// populate flashcards however you like 

var csvRows = flashCards.Select(x => 
    new FlashCardCsvRow() 
    { 
     Front = x.Front, 
     Back = x.Back, 
     CardDifficulty = x.CardDifficulty.ToString(); 
    }); 

var engine = new FileHelperEngine<FlashCardCsvRow>(); 
engine.WriteFile("Output.Txt", csvRows); 

FileHelpers hat viele nette Funktionen, um Ihnen weiter zu helfen. Zum Beispiel möchten Sie vielleicht your own enum converter anstelle von x.CardDifficulty.ToString() implementieren.

Übrigens werden Sie Probleme mit Ihren static Eigenschaften in FlashCard bekommen. Ich bin mir nicht sicher, ob Sie diese Eigenschaften statisch machen wollten.