다른 레코드 형식이있는 CSV 파일을 읽고 있습니다.행의 열 수가 다른 CSV 파일
첫 번째 레코드에는 항상 3 개의 열이 있습니다. 헤더입니다.
다른 레코드에는 가변 개수의 열이 있습니다.
구분 기호는 파이프입니다. 열의 길이는 고정되어 있습니다 (각 열 유형은 고정 길이입니다).
내가 FileHelpers와 파일을 CSV의 유형을 분석하기 위해 노력하고있어 :
*|060318|4
1|Tom |2 |605212999|02|663790000|02|T3_1018_RM |0
2|Steve |2 |605212999|02|663790000|02|T3_1018_RM |0
3|Bob |1 |605212999|02|T3_1018_RM |0
CSV 열 :
ID|Name|Telephones Count|TelephoneNumber|TypeTelephone...|IDType|ProductType
1 호선과 2 개가 2 개 전화기 (수와 유형) :
3 호선에는 전화기 1 개 (번호 및 유형) :
605212999|02
FileHelpers 또는 다른 일반 코드를 사용할 수 있습니까?
나는 이런 식으로 비슷한 시도 :
StreamReader sr = new StreamReader(filename);
var csvList = new List<string[]>();
while(!sr.EndOfStream)
{
String[] header = sr.ReadLine().Split('|');
csv.Add(header);
}
사용 FileHelpers하지 FixedLengthRecord
적용
[FixedLengthRecord()]
public class Customer
{
[FieldFixedLength(1)]
public int Id;
[FieldFixedLength(8)]
[FieldTrim(TrimMode.Both)]
public string Name;
[FieldFixedLength(2)]
[FieldTrim(TrimMode.Both)]
public int TelephoneCount;
....
public string Phone1;
public byte Phone1Type;
public string Phone2;
public byte Phone2Type;
...
public string Phone9;
public byte Phone9Type;
[FieldFixedLength(14)]
[FieldTrim(TrimMode.Both)]
public string IDType;
[FieldFixedLength(1)]
public int ProductType;
}
또는 http://www.filehelpers.net/example/QuickStart/ReadWriteRecordByRecord/도 이 가변 길이 레코드와 함께 사용할 수 있습니다
많은 optionalcolumns있다. 샘플 :'Required Column 1, OptionalColumn1, OptionalColumn 2, ... OptionalColumn N, Required Column 2, Required Column 3' – Kiquenet
@Kiquenet 추가 컬럼의 속성을 지정할 수 있습니다. 그 전에 [[FieldOptional]'속성. 업데이트 된 답변을 참조하십시오. –
*** 전화 번호 ***을 포함하는 열이 있습니다. 예를 들어, *** 2 *** 값, 다음 열은 _ 전화 번호이며 telephone_ ('01, 02 for mobile')입니다. 예를 들면 다음과 같습니다 :'| 2 | 605212115 | 02 | 663794042 | 02 |' – Kiquenet