반응형

office 문서의  관리 / 편집을 프로그램으로 하기 위해서는 vb나 c#을 이용해야하죠. 특히 다음과 같은 마소의 본연 라이브러리로 하는데요, 기술의 발달로 .Net Framework 가 아닌 .NET core를 넘어 .NET Stardard에서 

 

Microsoft.Office.Interop.Word

Microsoft.Office.Interop.Excel

Microsoft.Office.Interop.Powerpoint

Microsoft.Office.Interop.Outlook 

의 com api를 사용하면 다음과 같은 에러메시지를 맞게 되었죠.

 

일단 이유에 대해서 설명드리겠습니다. 윈도우 전용이었던 .Net Framework 에서 cross platform을 추구하는 .NET core, .NET Standard로 넘어오면서 기본 세팅하에서는 com api를 인식할 수 없게 되었어요. com api는 윈도우에만 존재하기 때문이죠.

 

구글링했을때는 ".net core에서는 사용할 수 없다." 라고 기술되어 포기했었는데, 직접참조하면 된다고해서 도전을 다시 해봤죠. 역시나 안됐어요.

 

그렇다면 어떻게 세팅하면 사용할 수 있을까?

방법은 의외로 간단했어요.

 

platform 세팅을 any 에서 window로 바꾸는 것이죠.

 

1. 솔루션 바로 하단의 어플리케이션을 우클릭 

2. 애플리케이션 -> 일반 

 

3. 대상 OS를 찾아 기본값인 (없음)을 클릭

 

4.Windows를 클릭

 

5. 솔루션 내 종속성 우클릭 후 COM 참조 추가

(Nuget으로 microsoft.office.interop 라이브러리를 추가하면 에러가 나던데, 성공하신분 연락 또는 댓글로 방법 남겨주시기 바랍니다!!)

 

6. 필요한 라이브러리 추가 ( 스크린샷 예제에서는 Microsoft.Office.Interop.Word 를 사용하기 위해 word com object를 추가)

 

word com 객체를 추가하였고 이제 using Microsoft.Office.Interop.Word를 사용하면 라이브러리 사용이 가능하답니다.

 

 

주의할점!!!

1. 플랫폼을 바꾸면 어떻게 되느냐 - 당연히 지정한 플랫폼에서만 사용가능합니다. window10/11 등의 window os가 설치된 PC 또는 window server에서만 사용이 가능한 것이죠.

 

2. 위 예제에서 Microsoft Word 16.0 Object Library가 안보이시는 분들 특히, 이 com 객체를 추가하여 라이브러리를 사용하기 위해서는 개발된 어플리케이션이 설치될 pc에 office가 설치되어 있어야 합니다. 

 

3. 이 포스팅을 업로드하는 시점까지 확정된 microsoft의 com api 지원기간은 2029년까지로 알려져있습니다.

반응형

+ Recent posts