Estoy usando A Fast CSV Reader para analizar un texto pegado en una página web. El lector Fast CSV requiere un objeto TextReader, y todo lo que tengo es una cadena. ¿Cuál es la mejor manera de convertir una cadena en un objeto TextReader sobre la marcha?
¡Gracias!
Actualización- Código de muestra- En la muestra original, un nuevo StreamReader está buscando un archivo llamado "data.csv". Espero suministrarlo a través de TextBox_StartData.Text.
El uso de este código a continuación no se compila.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
El new StreamReader(sr)
me dice que tiene algunos argumentos no válidos. ¿Algunas ideas?
Como un enfoque alternativo, he intentado esto:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
pero obtengo un Illegal characters in path Error.
Aquí hay una muestra de la cadena de 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
¿Alguna idea si este es el enfoque correcto? ¡De nuevo, gracias por tu ayuda!
fuente
TextReader
No es una interfaz, es una clase abstracta.Quieres un StringReader
fuente
StringReader
es unTextReader
(StreamReader
también lo es, pero para leer desde secuencias). Entonces, tomando su primer ejemplo y simplemente usándolo para construir el enCsvReader
lugar de tratar de construir un aStreamReader
partir de él primero da:fuente
Simplemente use la clase StringReader . Hereda de TextReader.
fuente
Si observa la documentación
TextReader
, verá dos clases heredadas. Y uno de ellos esStringReader
, que parece hacer exactamente lo que quieres.fuente