Ich verwende einen schnellen CSV-Reader , um eingefügten Text in eine Webseite zu analysieren. Der Fast CSV Reader benötigt ein TextReader-Objekt und ich habe nur eine Zeichenfolge. Was ist der beste Weg, um eine Zeichenfolge im laufenden Betrieb in ein TextReader-Objekt zu konvertieren?
Vielen Dank!
Update- Beispielcode- Im Originalbeispiel sucht ein neuer StreamReader nach einer Datei mit dem Namen "data.csv". Ich hoffe, es über TextBox_StartData.Text liefern zu können.
Die Verwendung dieses Codes unten wird nicht kompiliert.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
Das new StreamReader(sr)
sagt mir, dass es einige ungültige Argumente hat. Irgendwelche Ideen?
Als alternativen Ansatz habe ich Folgendes versucht:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
aber ich bekomme eine Illegal characters in path Error.
Hier ist ein Beispiel der Zeichenfolge von TextBox_StartData.Text:
Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n
Irgendwelche Ideen, ob dies der richtige Ansatz ist? Danke nochmal für deine Hilfe!
quelle
TextReader
ist keine Schnittstelle, es ist eine abstrakte Klasse.Sie möchten einen StringReader
quelle
StringReader
ist einTextReader
(StreamReader
ist auch, aber zum Lesen aus Streams). Wenn Sie also Ihr erstes Beispiel nehmen und es nur verwenden, um das zu konstruieren,CsvReader
anstatt zuerst zu versuchen, einStreamReader
daraus zu konstruieren, erhalten Sie:quelle
Verwenden Sie einfach die StringReader- Klasse. Es erbt von TextReader.
quelle
Wenn Sie sich die Dokumentation
TextReader
ansehen , sehen Sie zwei erbende Klassen. Und eine davonStringReader
scheint genau das zu tun, was Sie wollen.quelle