2012-04-27 2 views
3

데이터 레코드를 검색하고 모니터링 도구에 표시하기 위해 Excel 파일을 쿼리하고 있습니다. 문제는 나는 다음과 같은 요청과 함께, 해당 ID를 가진 레코드를 선택하려고 할 때마다, 그것은 쿼리 실행 오류가 발생한다는 것입니다 :C#을 사용하여 Excel 파일을 쿼리하고 숫자 셀을 사용하여

이 말해

을 ExecuteCommandTextErrorHandling을 그의 유형 쿼리 및 대상 셀이 호환되지 않습니다. 그 세포 유형은 표준 기본 유형입니다 때문에 ID 열이 할 수있는 것보다 더 많은 단지 숫자가 포함

SELECT TOP 20 [Fields...] 
FROM [RECORD$] 
WHERE (([id] = '1')) 

처럼

내 요청을 보인다.

내 질문은입니다. 이전에 유형을 모른 채 레코드를 가져올 수 있습니까?

필자는 열 유형을 적용해야합니까? 예외를 catch하고 따옴표없이 다시 시도해야합니까? 여기

는 Excel 파일 내 연결 문자열 사전에

public static DataTable queryXlsFile(String query, OleDbConnection dbConnection) 
{ 
     OleDbDataAdapter dbCommand = new OleDbDataAdapter(query, dbConnection); 
     DataTable dt = new DataTable(); 
     dbCommand.Fill(dt); 
     return dt; 
    } 

Provider=Microsoft.ACE.OLEDB.12.0; data source=C:\\test\\321.xls; Extended Properties=\"Excel 8.0;HDR=Yes;\"; 

감사를 조회하는 데 사용되는 코드입니다.

답변

1

IMEX = 1을 추가하십시오.

HDR = 예; IMEX는 "

+0

완료하지만 레코드 시트에 숫자 ID 만있는 경우에도 여전히 예외가 throw됩니다. 지금은 그냥 인용 부호로 시도하기 때문에 예외가 발생하면 다시 시도하지 않습니다. – Oflocet

1

당신이 행의 많은 경우, 유형이 다른 유형이 첫 번째 줄에 따라, 대부분의 유형은 한 가지 대답의 유형은 문자열 1 =

+0

+1. – Oflocet

관련 문제