C#에서 엑셀 참조시에 주의할 내용

참조추가를 누르면 탭이 여러개가 있다.. (기준은 VS2008)

.NET, COM, 프로젝트, 찾아보기, 최근에 사용한 파일

방법은 두가지가 있다.. .NET을 사용하는 방법, COM을 사용하는 방법

둘중에 아무거나 하면 된다고 한다..

나도 마찬가지로 두가지 중에 아무거나 하면 되리라 생각해서

아무거나 하니깐 되긴한다..

근데.. 문제는 COM으로 할 경우에는 개발하는 곳에 설치된 오피스와

배포지에 설치된 오피스의 버젼이 동일해야 한다..

만약 2003, 2007, 2010이 설치되어있다한다면.. 2010이

혹은 2003, 2010이 설치되어있다고 해도, 2010이

배포지에 설치되어있어야 한다.

최종 버전을 따라가는 것 같다..

나도 2003, 2010이 설치되어있는 상태에서 

2003 어샘블리를 추가했는데도

2003이 설치된 배포지에서 실행이 되지 않았다..

또 예외처리를 보니깐 2010을 찾고 있었다..

결론적으로 2010, 그러니깐 최종버전을 따라가는 것 같다..

그래서 나는 배포할 때 .NET으로 배포하도록 했다..

그리고 엑셀의 대단한 기능들을 사용하지 않기 때문에 

Microsoft.Office.Interop.Excel 11.0.0.0 과

Office 11.0.0.0을 참조했다..

그 후에 배포하니.. 별문제 없이 배포되었다..

문제는 서버인데.. 아마도 윈도서버 자체에 .NET프레임워크가 있기때문에

그리고 WIN 2008 R2 정도만 되어도 .NET 3.5는 설치되기 때문에

Microsoft.Office.Interop.Excel 11.0.0.0 과

Office 11.0.0.0정도는 무방하다 생각되었다..

결론적으로는 .NET으로 배포되었다..

그리고 아까 말했던 내용이 무엇이냐면..

COM 부분에서 

Microsoft Excel 11.0 Object Library를 추가하면 자동으로 Office도 딸려오더라..

그래서 추가가 된 것이.. Microsoft Office 11.0 Object Library인데..

참조 속성의 경로에 보면

C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\14.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

라고 되어있는 것 처럼 14.0을 가리키게된다..

그래서 배포지에서 실행을 하면 14.0이 없다면서 에러를 뿜는다..

결론은 2003으로 배포하고 싶으면 2003만 깔아서 2003으로 배포를 하던지..

2010이 설치되어있는 상황에서 배포해서 2003에서 사용하도록 하던지다..

해결되니.. 뭐.. 쉬웠네 소리 나오네..

댓글 남기기