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년까지로 알려져있습니다.
'language & Framework > .NET lib & nuget' 카테고리의 다른 글
[.Net] System.Net.Http(.Json) REST API 호출 - 1. 기초와 Get 방식 (1) | 2024.12.17 |
---|---|
[.Net 라이브러리] (C#) System.Net.Mail - 프로그램으로 이메일 발송하는 방법 (0) | 2024.05.09 |
[.NET 라이브러리] System.Text.Json (0) | 2023.11.07 |
[c# dotnet nuget] MsgReader (0) | 2023.11.07 |
[c# dotnet nuget] Newtonsoft.Json (0) | 2023.10.27 |