2009-12-02 7 views
3

일반 목록을 CSV로 내 보내야합니다. 분명히 나는 ​​내 자신을 쓸 수도 있지만 이것을 피하고 싶다!CSV로 내보내기 - C#

저는 Google에 많은 CSV 파서를 찾을 수 있지만 많은 작가는 찾을 수 없습니다. FileHelpers를 다운로드했지만 제대로 출력되지 않습니다. 예컨대

필드가

,,",,, 

출력 같으면 간단하다 : 필드의

,,",,, 

. 나는 기대할 것이다 :

",,"",,," 

정확한?

제안 사항이나 직접 작성해야합니까?

답변

4

RFC 4180을 확인하십시오. XML을 CSV로 변환하기 위해 XSL을 작성해야했기 때문에 '옳은'일이 무엇인지 쉽게 알 수있었습니다.

http://tools.ietf.org/rfc/rfc4180.txt

+0

링크를 제공해 주셔서 감사합니다. 그것은 꽤 좋은 지원이 될 것입니다. – anonymous

+0

CSV를 생성하고 소비하는 응용 프로그램이 정확하게 동일한 방식으로 RFC 4180을 준수한다고 가정하면 모두 훌륭합니다. 실제 세계에서 CSV는 HTML과 매우 흡사합니다. 표준에 따라 거의 아무도하지 않으며 Microsoft는 표준을 생산하거나 소비하지 않는 제품을 만듭니다. 전세계의 많은 CSV가 OLD 버전의 Excel로 작성 되었기 때문에 상황은 IE6과 깨진 HTML/CSS 해석이 98.5 %의 시장을 통제했을 때와 매우 유사합니다. –

+0

매우 사실입니다.하지만 앱이 RFC에 완전히 부합하거나 그렇지 않으면 OP를 할 때 자신의 도구를 만들려고한다면 완벽을 위해 노력해야한다고 주장 할 것입니다. RFC. –

3

자신의 것을 만드는 것이 얼마나 간단한 지, 나는 이것을 위해 자신 만의 클래스를 작성한다고 말합니다. 당신은 당신 자신의 뉘앙스를 꽤 쉽게 다룰 수 있습니다.

+0

예 ... 지금 뉘앙스에 대해 읽으십시오. 쉼표, 따옴표 및 개행 문자 일 경우 충분히 간단 할 수 있습니다. 필자는 FileHelpers가 읽기 및 쓰기 모두에 사용될 수 있기를 바랬습니다. 작성된 모든 파일을 올바르게 읽을 수는 있지만 실제로는 그렇지 않습니다. – anonymous

4

FileHelpers는 기록 매핑 클래스에 필드에 FieldQuoted 속성을 물어 무엇을 할 것입니다.

+0

필드를 큰 따옴표로 묶지 않으면 RFC에 오해가 있지 않는 한 큰 따옴표가 필드 안에 표시되지 않을 수 있습니다. '), it 'abc "123'필드는 'abc"123'을 출력하지만, 'abc, 123'필드는 쉼표를 잡아낼 수 있습니다. [FieldQuoted (' "'QuoteMode.OptionalForBoth) 즉, "abc, 123" '을 출력 할 것입니다. 그렇다면 QuoteMode를 선택 사항이 아니며 pedantic으로 종료 할 수 있습니까?:) – anonymous

+0

FileHelpers는 RFC를 읽지 않은 개발자가 만든 CSV 파일의 경우가 있기 때문에 RFC와는 다른 케이스를 포함 할 수 있습니다. 당신은 그렇지 않았습니다. ;-) –

+0

세 가지 답변이 싫다. – anonymous

0

나는 csv 형식을 읽고 쓰는 데 Josh Close가 정말 권장하는 CsvHelper입니다. CsvHelper는 특수 문자로 문자열을 이스케이프하는 것을 포함하여 가장 일반적인 사용 사례를 처리합니다.

간단한 방법으로 개체를 읽고 쓸 수 있으며 원하는 필드를 수동으로 읽고 쓸 수 있습니다.

관련 문제