2012-09-26 4 views
3

저는 스프레드 시트를 사용하여 작업 해왔고 지금까지는 아무런 문제가 없었습니다.하지만이 오류는 Excel 파일을 읽으려고 할 때 파란색으로 나타났습니다. 아무도 내가 이것을 고칠 수있는 방법을 알고있다. 다음은 Excel을 읽고 데이터 집합에 데이터를 넣는 데 사용하는 코드입니다. 이전에는 문제가 없었지만 데이터 소스에 약간의 변경 (날짜가 포함되지 않음)을 한 후에이 오류가 나타났습니다."법적 OleAut 날짜가 아닙니다."해결 방법 C#에서 Excel 파일을 읽을 때?

var fileName = string.Format("C:\\Drafts\\Excel 97-2003 formats\\All Data 09 26 2012_Edited.xls"); 
     var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); 

     var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); 

     DataSet Originalds = new DataSet(); 
     adapter.Fill(Originalds, "Employees"); // this is where the error shows up 
+2

스프레드 시트에서 오류를 생성하는 필드를 아십니까? 그렇다면이 필드에는 무엇이 포함되어 있습니까? – user1201210

+0

가능한 복제본 : http : //stackoverflow.com/questions/310700/meaning-of-exception-in-c-sharp-app-not-a-legal-oleaut-date –

+0

@CodeIgnoto 해당 복제본이 아닙니다! 나는 먼저 질문을 보았다. 제안과 해결책 중 어느 것도 나에게 적용되지 않습니다. – Sophonias

답변

8

이 문제를 해결하기 위해 필자는 최신 oleDB 공급자로 연결 문자열을 변경했습니다.

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES;'", fileName); 

또한 Excel 데이터의 마지막 행 다음의 빈 공간이 값으로 읽히지 않았는지 확인했습니다.

+2

+1의 첫 번째 또는 마지막 항목이되어야합니다. – Marcel

0

다른 날짜 형식을 찾으십시오. 필자의 경우 하나의 열은 dd/mm/yyyy 형식이고 다른 하나는 mm/dd/yyyy 형식입니다. 일단 날짜 형식이 수정되면 데이터 가져 오기가 작동합니다.