I'm using A Fast CSV Reader to parse some pasted text into a webpage. The Fast CSV reader requires a TextReader object, and all I have is a string. What's the best way to convert a string into a TextReader object on the fly?
Thanks!
Update- Sample code- In the original sample, a new StreamReader is looking for a file called "data.csv". I'm hoping to supply it via TextBox_StartData.Text.
Using this code below doesn't compile.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
The new StreamReader(sr)
tells me it has some invalid arguments. Any ideas?
As an alternate approach, I've tried this:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
but I get an Illegal characters in path Error.
Here's a sample of the string from 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
Any ideas if this the right approach? Thanks again for your help!
Use the
StringReader
class, which inheritsTextReader
.Use System.IO.StringReader :
StringReader
is aTextReader
(StreamReader
is too, but for reading from streams). So taking your first example and just using it to construct theCsvReader
rather than trying to construct aStreamReader
from it first gives:If you look at the documentation for
TextReader
, you will see two inheriting classes. And one of them isStringReader
, which seems to do exactly what you want.Simply use the StringReader class. It inherits from TextReader.
You want a StringReader