원문 : http://blog.naver.com/kbk9879?Redirect=Log&logNo=120137136990


엑셀을 업로드할때 숫자와 문자를 병행하여 입력할때가 종종있다.

이번에 회사에서 일을 하다가 평소에 숫자값으로 들어가다가 갑자기 문자값도 들어갈 수 있다고

하여 별생각이 없었는데..

업로드할때 문자값이 나오지 않은 것이다..ㄷㄷㄷ

구글링을 통해 확인결과..

ODBC에서 엑셀내용을 저장할때 1~8번째 행을 확인하여 그 FIELD값이 전부 숫자일경우 8번째 행

이후의 값이 문자이면 모두 NULL값으로 처리가 된단다..ㄷㄷㄷ

결국 해결책을 찾을려고 다시 구글링을 하였는데 다들 IMEX=1 이렇게 하면 된다고 한다..

하지만 난 이미 적용시켰는데도 불구하고 되지 않고 있으니..

나의 ODBC connect부분이다.

string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + strFilePath + "; Extended Properties=\"Excel 8.0;HDR=yes;IMEX=1\"";

oleDBCon = new OleDbConnection(strProvider);

......이로써 구글링으로 해결책을 찾는데 3시간이나 보냈다가..

어느 PDF로 찾은 결과..레지스트리에 있는 TypeGuessRows의 값을 수정하면 된다는 글을

보게 되었다..

TypeGuessRows의 default값이 8로 되어 있는 것을 확인할 수 있는데..

이 값으로 ImportMixedTypes에 정의되어진 type으로 정해진단다..

결국 TypeGuessRows의 값을 늘리고 다시 업로드를 해보니 잘된다..

TypeGuessRows의 값을 늘릴때의 부작용에 대해서는 아직 확인을 못하고 있어서..우선

이렇게 적용시켜놓고 추후에 문제가 발생하면 확인해봐야겠다..ㅠㅠ

[해당 레지스트리가 존재하는 위치]

WINDOWS XP

HKEY-LOCAL-MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

WNDIOWS SERVER 2008(32비트)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\

Access Connectivity Engine\Engines\Excel

WINDOWS SERVER 2008(64비트)

HKEY-LOCAL-MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel

by SJ.. 2012. 11. 1. 11:35