발생한 오류
: C#에서 엑셀 업로드 기능 구현 중 “‘Microsoft.ACE.OLEDB.12.0’ 공급자는 로컬 컴퓨터에 등록 할 수 없습니다.” 라는 예외 발생.
오류 원인
: 64비트 Office 프로그램을 사용하고 있어 64비트 용 OLE DB 제공자가 설치되어있으나, 32비트 프로그램인 Visual Studio 에서는 해당 제공자를 찾을 수 없음.
환경
: PC - 64 bit / 엑셀 - 64bit
해결 방법
: 32비트 버전의 제공자(ACEOLED.dll)를 설치해야함.
1) 아래 링크를 통해 Microsoft Access Database Engine 2010 Redistributable 패키지를 다운로드한다.
(https://www.microsoft.com/en-us/download/details.aspx?id=54920
Microsoft Access Database Engine 2016 Redistributable
This download will install a set of components that can be used to facilitate transfer of data between Microsoft Office System files and non-Microsoft Office applications.
www.microsoft.com
아래와 같은 화면이 나오는데, 언어를 설정한 후 다운로드 버튼을 누른다.
그럼 아래의 창이 뜬다.
2) 32비트와 64비트를 고를 수 있는데, 두개 다 설치 후 실행.
(본인 컴퓨터에 맞는 버전만 설치하여 엑셀 기능 실행 시 오류가 안 나는 경우도 있다고 하는데, 본인은 똑같은 오류 “‘Microsoft.ACE.OLEDB.12.0’ 공급자는 로컬 컴퓨터에 등록 할 수 없습니다.” 가 또 발생함.)
각각의 파일을 실행해보면 64비트는 설치가 되지만 32비트 AccessDatabaseEngine.exe 설치 시 "Microsoft Office SharePoint Designer 2010, Microsoft Office Professional Plus 2010, Microsoft Office Visio 2010" 제품을 삭제하라며 오류가 발생.
2007 'Office System Driver: 데이터 연결 구성 요소'를 다운받으라고 하는데..
해당 다운로드 페이지는 404 오류가 뜬다!
(https://www.microsoft.com/en-us/download/details.aspx?id=23734)
이럴 때는 cmd 명령창을 통해 AccessDatabaseEngine.exe를 실행한다.
4) " cd downloads " 입력 후 엔터 > " AccessDatabaseEngine.exe/passive "를 입력 후 enter를 치면 설치가 진행된다.
5) 설치가 완료된 후 엑셀 기능을 실행하면 오류가 발생하지 않는다.
추가
: 엑셀 자체의 문제이거나, 서버에 office가 설치되지 않는 등의 경우에도 해당 오류가 발생할 수 있다고 한다.
'개발하는 '정' > C# (.NET)' 카테고리의 다른 글
C# 텍스트 파일 다루기 - 쓰기 (txt 파일 생성) (0) | 2019.09.19 |
---|---|
C# 엑셀 핸들링 (import 후 DataGridView에 출력,export) (0) | 2019.08.23 |
[C# .NET] 윈도우폼 계산기 예제 : 3. 추가 기능 구현 (0) | 2019.07.09 |
[C# .NET] 윈도우폼 계산기 예제 : 2. 기초 기능 구현 (0) | 2019.07.09 |
[C# .NET] 윈도우폼 계산기 예제 : 1. 디자인 구현 (0) | 2019.07.09 |
댓글