Estou usando o A Fast CSV Reader para analisar algum texto colado em uma página da web. O leitor Fast CSV requer um objeto TextReader, e tudo o que tenho é uma string. Qual é a melhor maneira de converter uma string em um objeto TextReader em tempo real?
Obrigado!
Atualizar - código de exemplo - no exemplo original, um novo StreamReader está procurando um arquivo chamado "data.csv". Espero fornecê-lo via TextBox_StartData.Text.
Usar este código abaixo não é compilado.
TextReader sr = new StringReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
O new StreamReader(sr)
me diz que tem alguns argumentos inválidos. Alguma ideia?
Como uma abordagem alternativa, tentei o seguinte:
TextReader sr = new StreamReader(TextBox_StartData.Text);
using (CsvReader csv = new CsvReader(sr, true))
{
DetailsView1.DataSource = csv;
DetailsView1.DataBind();
}
mas recebo um Illegal characters in path Error.
Aqui está um exemplo da string 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
Alguma idéia se esta é a abordagem correta? Obrigado novamente por sua ajuda!
fonte
TextReader
não é uma interface, é uma classe abstrata.Você quer um StringReader
fonte
StringReader
é umTextReader
(StreamReader
também, mas para leitura de fluxos). Portanto, pegue o seu primeiro exemplo e use-o para construir o, emCsvReader
vez de tentar construir um aStreamReader
partir dele, primeiro:fonte
Basta usar a classe StringReader . Herda de TextReader.
fonte
Se você olhar para a documentação
TextReader
, verá duas classes herdadas. E um deles éStringReader
, o que parece fazer exatamente o que você deseja.fonte