Używam szybkiego czytnika CSV do analizowania wklejonego tekstu na stronie internetowej. Czytnik Fast CSV wymaga obiektu TextReader, a wszystko, co mam, to ciąg. Jaki jest najlepszy sposób na konwersję ciągu znaków na obiekt TextReader w locie?
Dzięki!
Aktualizacja - przykładowy kod - w oryginalnym przykładzie nowy StreamReader szuka pliku o nazwie „data.csv”. Mam nadzieję, że dostarczę go za pośrednictwem TextBox_StartData.Text.
Użycie tego kodu poniżej nie powoduje kompilacji.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
new StreamReader(sr)
Mówi mi, że ma pewne nieprawidłowe argumenty. Jakieś pomysły?
Jako alternatywne podejście próbowałem tego:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
ale dostaję Illegal characters in path Error.
Oto próbka ciągu z 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
Jakieś pomysły, jeśli to właściwe podejście? Jeszcze raz dziękujemy za pomoc!
źródło
TextReader
nie jest interfejsem, to klasa abstrakcyjna.Chcesz StringReader
źródło
StringReader
jestTextReader
(StreamReader
jest również, ale do odczytu strumienie). Więc biorąc pierwszy przykład i po prostu używając go do skonstruowaniaCsvReader
zamiast próbować skonstruowaćStreamReader
z niego najpierw, otrzymujemy:źródło
Po prostu użyj klasy StringReader . Dziedziczy po TextReader.
źródło
Jeśli spojrzysz na dokumentację programu
TextReader
, zobaczysz dwie klasy dziedziczące. A jednym z nich jest toStringReader
, co wydaje się robić dokładnie to, czego chcesz.źródło