-
[C#] System.InvalidCastException: 'Unable to cast COM object of type 'System.__ComObject' .. 관련 에러C# 2023. 5. 25. 17:50728x90
안녕하세요.
오늘은 간단하지만 헤매서 반나절을 날렸기에 잊어버리지 않고자 글을 남깁니다.
시작하기에 앞서 해당 에러는 Interop.Microsoft.Office.Interop.Excel 에 대한 저의 개인적인 해결법으로 모든 문제에 대한 답이 될 수는 없습니다 🤷♂️🤷♂️
환경
OS: Windows 10
환경 : C#, .Net6.0, WPF
문제 발생 dll : Interop.Microsoft.Office.Interop.Excel
상황
- 컴퓨터의 블루스크린으로 인해 포맷을 진행했고, 그에 따라 Excel을 새로 설치했습니다.
그 이후로 회사내 매니저 프로그램에서 Excel을 만들어주는 기능을 개선하기위해 실행시켰는데 오류가 발생하며 기능자체가 실행되지 않았습니다.
System.InvalidCastException: 'Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: 라이브러리가 등록되지 않았습니다. (0x8002801D (TYPE_E_LIBNOTREGISTERED)).'
이런 오류를 출력하면서 말이죠.
원인
해당 오류가 발생한 원인은 두가지 입니다. '000208D5-0000-0000-C000-000000000046' 이 라이브러리를 찾으려는데 안보인다는 거죠. 이상하다? 나는 분명히 설치했는데?
여기서 합리적 의심으로 혹시 다른 버전을 잡고있는건 아닐까? 라는 생각이 들었습니다.
해결
해결 원인은 의외로 간단합니다.
요만 말하자면 중복되는 내용을 레지스트리의 내용을 삭제하면 됩니다.
그럼 같이 해보시죠.
① 먼저 시작창에 '레지스트리 편집기' 를 검색해 줍니다.
② 다음은 HKEY_CLASSES_ROOT/TypeLib/{00020813-0000-0000-C000-000000000046} 에 들어가 봅시다.
③ 그럼 버전이 적혀있는 폴더가 있습니다. (저 같은 경우에는 1.8, 1.9 이렇게 두 개의 폴더가 있었습니다.)
④ 이제 폴더를 하나씩 보며 뭔가가 비어있는 폴더들을 정리해 줍니다. (저 같은 경우에는 1.9폴더에 기본값만 있고 PrimaryInterop~가 없었습니다)
⑤ 정리를 하고 다시 한 번 안되는 부분을 실행해 봅시다!
네 오늘은 퇴근 직전에 아주 간단하게 글을 작성하며 알아봤습니다.
처음에는 Excel을 더이상 .net6에서 지원하지 않는건가 식겁했네요.
혹시라도 도움이 되실까 싶어 글남깁니다. 문제가 있다면 삭제하겠습니다.
감사합니다. :D
'C#' 카테고리의 다른 글
[C#] Split 활용하기! (1) 2023.11.29 [C#] Process실행시 Unhandled exception. System.ComponentModel.Win32Exception 관련 오류 (2) 2023.01.05 [C#] Obslete란? (0) 2022.09.20 [C#] System.Text.Json을 이용한 Json 데이터 탐색 (1) 2022.08.26 [C#] string.Format사용시 입력 문자열의 형식이 잘못되었습니다. 관련 오류 (0) 2022.08.11