C #에서 디스크에 쓰지 않고 문자열에서 TextReader 개체를 만들려면 어떻게해야합니까?


126

A Fast CSV Reader 를 사용하여 붙여 넣은 텍스트를 웹 페이지에 구문 분석하고 있습니다. Fast CSV 리더에는 TextReader 개체가 필요하며 내가 가진 것은 문자열뿐입니다. 즉석에서 문자열을 TextReader 개체로 변환하는 가장 좋은 방법은 무엇입니까?

감사!

업데이트-샘플 코드-원본 샘플에서 새 StreamReader는 "data.csv"라는 파일을 찾고 있습니다. TextBox_StartData.Text를 통해 제공하고 싶습니다.

아래 코드를 사용하면 컴파일되지 않습니다.

        TextReader sr = new StringReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

new StreamReader(sr)이 일부 잘못된 인수가 나에게 말한다. 어떤 아이디어?

대체 접근 방식으로 다음을 시도했습니다.

        TextReader sr = new StreamReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(sr, true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

하지만 Illegal characters in path Error.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

이것이 올바른 접근 방식이라면 어떤 아이디어가 있습니까? 도와 주셔서 다시 한 번 감사드립니다!

답변:



9

StringReader을 상속 하는 클래스를 사용합니다 TextReader.


3
TextReader인터페이스가 아니라 추상 클래스입니다.
svick


4

StringReader 되는TextReader ( StreamReader스트림로부터도하지만 독서를한다). 따라서 첫 번째 예제를 사용하여 먼저 CsvReadera를 생성하려고 시도 하는 대신 다음을 생성 StreamReader합니다.

TextReader sr = new StringReader(TextBox_StartData.Text);
using(CsvReader csv = new CsvReader(sr, true))
{
  DetailsView1.DataSource = csv;
  DetailsView1.DataBind();
}

감사합니다 Jon ... Fast CSV 프레임 워크에 버그가있는 것 같습니다. 다음과 같은 결과가 나타납니다.! screencast.com/t/5wZRrjDMO ...
Hairgami_Master

내 CSV는 FNAME, LNAME, 이메일 존, 미상, JD @ email.com입니다
Hairgami_Master

1
( 어쨌든 screencast.com/t/5wZRrjDMO에 링크하고 있음을 확인하기 위해 소스를 본 후 ) 일련의 문자열 배열 (각 줄에 하나씩)을 생성하고 렌더링하려고 시도하는 것처럼 보입니다. "System.String []"텍스트가 반복됩니다. 이것은 잘 처리되지 않은 CSV 파서의 합리적인 결과처럼 들립니다. 그리드 뷰로 출력 해보고 무슨 일이 일어나는지보세요.
Jon Hanna

감사합니다 Jon- 사실, 저는 GridView를 사용하고 있습니다. 몇 가지 시도했지만 데이터가 제대로 반환되는 것 같습니다. 올바른 데이터 표시 제어를 선택하는 문제 일뿐입니다 .. ??
Hairgami_Master 2011 년

1
나는 컨트롤을 많이 사용하지 않는 경향이 있으므로 내가 놓친 것이있을 수 있습니다. 출력은 일련의 문자열 배열 (각 행에 대해 하나의 배열, 각 셀에 대해 하나의 문자열) 인 것 같습니다. 내가 두려워하는 것 이상으로 작동하지 않는 이유가 확실하지 않습니다. (
Jon Hanna


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.