2015-01-15 2 views
2

LinqToExcel을 사용하여 일부 정보를 검색하고 하나에서부터 제외하고 모든 열의 데이터를 가져올 수 있습니다.LinqToExcel이 "-"문자를 만났을 때 왜 null을 반환합니까?

Code Name LastName 
89 test1 test2 
89-2 test3 test4 
90 test5 test6 

와 내가 사용하는 값의 목록을 얻을 :

89 |test1|test2 
null|test3|test4 //here is my problem 
90 |test5|test6 
:

var excel = new LinqToExcel.ExcelQueryFactory(path) 
var excelValues = excel.Worksheet<Sheet>("Sheet1").AsEnumerable().Where(p => !String.IsNullOrWhiteSpace(p.Code)); 

이 다음 정보를 반환합니다 내가 3 열이

:이 시나리오입니다

89-2를 89.2로 변경하면 작동합니다. 내가 "-"캐릭터를 피할 수있는 방법이 있습니까? 또는 내가 뭘 잘못하고있어.

+0

포럼 사이트와 달리 "감사"또는 "모든 도움을 주셨습니다"또는 [so]의 서명을 사용하지 않습니다. "[안녕하세요, '고마워,'태그 라인 및 인사말을 게시물에서 삭제해야합니까?] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be 참조) -removed-from-posts) –

+0

Excel 문서에서 해당 열의 서식을 텍스트로 변경해보십시오. –

+0

작동하지 않았고 다른 문자 나 숫자와 함께 작동하는 이유가 무엇입니까? "-"기호와 같지 않음 – Moy

답변

3

LinqToExcel은 두 번째 행을 사용하여 데이터 유형을 결정하고 89는 숫자로 간주되며 모든 후속 데이터는 숫자로 간주됩니다. 숫자 앞에 작은 따옴표 (')를 추가하십시오. '89 년 강제로 내용을 텍스트로 설정하는 것을 강요합니다.

첫번째 행은 오브젝트의 후 엑셀

+0

Genius !!이게 나를 미치게 만들었습니다. 첫 번째 요소에 작은 따옴표를 추가했습니다. 코드 열 및 모든 작동합니다. – Moy

0

이 광고를 포함 클래스 속성 컬럼 이름에 매핑하는 데 사용되는 "excel.DatabaseEngine = DatabaseEngine.Ace을;"

var excel = new LinqToExcel.ExcelQueryFactory(path); 
excel.DatabaseEngine = DatabaseEngine.Ace; 

var excelValues = excel.Worksheet<Sheet>("Sheet1").AsEnumerable().Where(p => 
!String.IsNullOrWhiteSpace(p.Code)); 
관련 문제