[주의] 레지스트리를 수정하는 내용이니 주의해서 사용하세요.
C# 으로 OleDB를 이용해서 Excel을 읽어 들이고, Sqlite(.db)로 변환하는 Converter를 만들어서 사용하는 데
긴 문자열을 넣었더니 잘려서 컨버팅 되길래 확인해보니 255 글자 제한이 걸려 있다.
검색해서 확인해보니 여러가지 해결 방법들이 포스팅 돼 있는데 조금씩 안맞아서 확인해보고 정리해서 올려 놓는다.
[레지스트리 수정으로 255 글자 제한 풀기]
아래 버전 및 OS bit에 맞는 레지스트리를 찾아가서 TypeGuessRows 값을 0으로 바꾸면 된다.
(참고: 개발에 사용된 Excel 버전임. 윈도우 설치된 엑셀 버전이 아님)
(기본 값은 8인데, DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.
기본 글자 제한은 255자이고, 0으로 바꾸면 전체를 검사해서 DataType 길이로 잡는다고 함.)
[주의] 성능상의 이유로 글자수를 제한(Default:8) 하는 거라고 하니 감안해서 사용할 사람만 하기를..
[Windowns 32bit]
- Excel 2000, 2003 (xls)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(Excel 97 = 3.5)
- Excel 2013 (xlsx)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel
(2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)
[Windowns 64bit]
- Excel 2000, 2003 (xls)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel
(Excel 97 = 3.5)
- Excel 2013 (xlsx)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel
(2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)
[레지스트리 파일 다운로드]
Fix_255_Char_32bit_Excel_2000_2003.reg
Fix_255_Char_32bit_Excel_2007.reg
Fix_255_Char_32bit_Excel_2010.reg
Fix_255_Char_32bit_Excel_2013.reg
Fix_255_Char_64bit_Excel_2000_2003.reg
Fix_255_Char_64bit_Excel_2007.reg
Fix_255_Char_64bit_Excel_2010.reg
Fix_255_Char_64bit_Excel_2013.reg
[Excel 데이터 수정으로 255 글자 제한 풀기] (확인 안해봤음)
- 위에도 적었지만 DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.
8줄 이내에 255 글자 이상의 사용하지 않는 Dummy 데이터를 넣으면 해결 된다고 함.
[참조] http://www.todal.net/241?category=367351
[참조] http://it-developer.tistory.com/427
[참조] http://lemondory.tistory.com/129
[참조] http://ariswear.tistory.com/37