2014-03-03 3 views
1

LinqToExcel 라이브러리를 사용하려고 할 때 흥미로운 점을 발견했습니다.Excel에서 Linq이 문자열과 숫자가 혼합 된 문자열을 구문 분석하지 못했습니다.

var factory = new ExcelQueryFactory(@"TestData\myFile.xlsx"); 

var model = categoryHandler.GetCategoryTree(factory.Worksheet<MyRow>("WorkSheetName").ToList()); 

위의 코드를 사용하여 Excel 시트의 행을 MyRow라는 개체로 구문 분석합니다. 객체에는 Excel 시트의 열당 하나의 속성이 있습니다. 그러나 내가 알아챈 것은 라이브러리가 열의 문자열과 숫자가 혼합 된 내용을 무시한다는 것입니다. 열의 첫 번째 행에 숫자로 된 내용이있는 경우 이후 행의 숫자가 아닌 내용을 무시하거나 건너 뜁니다. 라이브러리가 첫 번째 행을 검사하고 나머지 파일에 대해 해당 형식을 사용하는 것처럼 보입니다. 셀은 모두 일반 형식으로 지정되지만 숫자 또는 일반 문자열을 포함 할 수 있습니다.

이 예상되는 동작입니까?

+0

'xlsx'에 액세스 할 수있는 경우 열의 형식을'텍스트 '로 변경하면 어떻게되는지보십시오. – RyanCJI

답변

4

문제는 LinqToExcel이 사용하는 OLEDB 공급자와 관련이 있습니다. Excel cell-values are truncated by OLEDB-provider

기사는 HDR = YES를 추가하는 문제를 돕고, LinqToExcel 이미 그 속성을 설정한다고 설명 :

여기에 문제를 설명하는 스택 오버플로 질문입니다.

기본적으로 처음 8 개 또는 16 개의 행에 영숫자 객실 번호가 있어야합니다. Else OLEDB는 해당 열의 모든 값을 문자열 대신 숫자로 처리합니다.

관련 문제