ODBC/OleDB로 Excel 읽어서 처리할 때, 255자로 짤리는 경우
[주의] 레지스트리를 수정하는 내용이니 주의해서 사용하세요.
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
'Programming > C#' 카테고리의 다른 글
[펌][C#] 초를 (Hour : Minutes : Seconds : Milliseconds) 시간으로 변환하는 가장 좋은 방법은 무엇입니까? (0) | 2018.07.12 |
---|---|
[Link] EPPlus(Create advanced Excel spreadsheets using .NET) (0) | 2018.04.16 |
Dictionary for Loop in C# (0) | 2017.12.05 |
[C#] Attribute : Obsolete - 더 이상 사용하지 않거나 그럴 예정인 코드에 대해서 (0) | 2017.05.10 |
[펌] string을 byte[] 배열로 변환? (0) | 2017.01.10 |