2013-01-24 1 views
1

이 파일 고려 :FileHelpers는 인용 문제

"firstName"",lastName 
fn1,ln1 
fn2 
fn3,ln3 
fn4,ln4 

모든 따옴표를 무시하는 어떤 가능성이 있습니까? 이 내 코드입니다 :

[DelimitedRecord(",")] 
    public partial class Person 
    { 
     //[FieldQuoted] 
     private string firstName; 

     [FieldNullValue("default first name")] 
     //[FieldQuoted] 
     private string lastName; 

     [FieldNotInFile] 
     private string city; 

     public string FirstName 
     { 
      get { return firstName; } 
      set { firstName = value; } 
     } 

     public string LastName 
     { 
      get { return lastName; } 
      set { lastName = value; } 
     } 

     public string City 
     { 
      get { return city; } 
      set { city = value; } 
     } 
    } 

      ExcelStorage provider = new ExcelStorage(typeof(Person)); 
      provider.FileName = "data.csv"; 
      System.Data.DataTable datTable = provider.ExtractRecordsAsDT(); 

DataTable에 다음 값 만 1 행을 포함합니다 :

{object[2]} 
    [0]: "firstName\",lastName\r\nfn1,ln1\r\nfn2\r\nfn3,ln3\r\nfn4,ln4\r\n" 
    [1]: "default first name" 

난 정말 FieldQuoted 속성, 또는 그것없이 내가이 있는지 무엇인지 이해하지 못하는 같은 결과 내가 파일에 따옴표를 배치에 상관없이

편집 : 나는

"firstName을"lastNam를 사용 경우 전자 을 Fn1, LN1이

괜찮 따옴표를 무시하지만 난

""firstName"",""lastName"" 
fn1,ln1 
fn2 
fn3,ln3 
fn4,ln4 

를 사용하는 경우 내가 첫 번째 행이 결과를 얻을

LN4 fn4 LN3 Fn2를 fn3,

[0]: "firstName\"\"" 
[1]: "lastName\"\"" 

답변

1

귀하의 입력 데이터가 유효하지 않습니다. 적어도, 따옴표에 관한. CSV의 필드는 두 배로 된 경우에만 ("") 포함 된 따옴표를 포함 할 수 있으며 따옴표 안에 사이에 포함 된 줄 바꿈을 포함 할 수 있습니다.

여기 정확히 보셨습니까? firstName 다음의 두 따옴표는 모두 포함 된 따옴표이며 다른 따옴표로 따옴표 붙은 필드를 닫지 않으므로 전체 파일이 단일 필드 인 것처럼 구문 분석됩니다.

+0

어떻게 든 파일의 모든 따옴표를 무시할 수 있습니까? – gigi

2

FieldQuoted 속성을 사용해보세요.

[FieldQuoted('"', QuoteMode.AlwaysQuoted, MultilineMode.NotAllow)] 

described here 설정을 테스트해야 할 수 있습니다.

관련 문제