본문 바로가기

C#&Blazor

엑셀 임포트시 셀타입을 미리 추정하지 않고 전체 스캔하도록 설정하기

OLEDBConnection Excel Import 를 이용해 엑셀 파일을 임포트할 경우

기본 설정으로 최초 8행을 읽어서 타입을 추정하게 됩니다.


최초 8행이 값이 숫자일 경우 해당 컬럼을 숫자 컬럼으로 문자가 나올 경우(mixed type cell) 문자열로 인식을 합니다.


문제는 최초 8행에 숫자만 나와서 숫자 컬럼으로 추정을 한 경우 이후 문자열 값이 나오면 해당 값이 소실 되거나 에러가 발생하는 상황이 생깁니다.

OLEDBConnection Excel Import 로 엑셀 파일을 읽다 이런 에러가 발생할 경우 에러의 원인을 추측할 수 없기 때문에 에러에 대처를 할 수 없게 됩니다.

에러를 발생했지만, 정확한 에러메시지가 나오지 않기 때문에 코드 에러인지, 데이터 에러인지 구분이 되지 않습니다.


이런 경우 OLEDBConnection Excel Import 가 최초 8행을 읽어서 컬럼 타입을 추정하지 않고


전체 행을 다 스캔해서 컬럼 타입을 정하도록 변경해야 합니다.

초기 로딩 속도가 느려지는 단점은 있지만 불필요한 추정으로 엑셀 파일을 임포트할 때 발생하는 원인을 알 수 없는 에러를 피할 수 있습니다.


1. 레지스트리 편집기를 엽니다.


2. "typeguessrows" 검색어로 레지스트리를 검색합니다.



3. 검색된 키 값의 기본 값은 8 입니다.

이름을 더블클릭하면 값을 입력하는 편집창이 표시됩니다.

값 데이터를 0으로 입력하고 "확인" 을 눌러 저장합니다.



이제 엑셀에서 값을 추정하지 않고 전체 행을 스캔해 타입을 결정하게 됩니다.



닫기