본문 바로가기
개발/.NET

[EXCEL] MS-Excel COM 라이브러리를 이용하여 엑셀 출력시 문제 해결.

by 그저그런보통사람 2010. 9. 8.
대부분은 접근 권한으로 인한 문제가 많다.

HTML 방식의 엑셀 출력이 아닌, MS OFFICE 설치시 등록되는 COM 개체를 이용하여 엑셀을 렌더링 할 경우

문제가 발생한다면 (여러가지가 있는데 각각의 오류 코드를 기억을 못해서.....) 다음과 같이 설정을 변경하면 

거의 해결 될 것이다.

권한! 권한이다.

COM 요소에서 Microsoft.Office.Interop.Excel 를 참조하여 프로그래밍 하고 결과를 실행하면 cls 등록 오류

부터 갖가지 오류를 접하게 되는데 거의 권한 문제로 인한 오류이다.

시작 -> 실행 -> comexp.msc 타이핑 (win7 기준, 타 os는 관리도구) 

-> 구성요소서비스 -> 내컴퓨터 -> DCOM 구성에서 

"Microsoft Excel Application" 개체의 속성을 연다.

[보안] 탭에서 [시작 및 활성화 권한]을 [사용자 지정]으로 한 후, [편집]을 열어 
[인터넷 게스트 계정]을 추가하여, 로컬 시작, 로컬 활성화를 체크하고 적용한다.

설마 인터넷 게스트 계정을 모를까만은 나도 혹시 헷갈려서 까먹을 수도 있어서 노파심에 적어놓는데,
"IUSR" 또는 "IUSR_컴퓨터이름" 으로 되어 있는 계정이 인터넷 계스트 계정이다.

추가로 [엑세스 계정]도 위와 마찬가지로 설정한다.

속성 탭중에 [ID] 탭으로 들어가면 기본값이 "시작하는 사용자"로 되어 있을것인데 이것을 "대화형 사용자"로
변경한다.

참고로 "메모리 부족으로 인해 생성 못한다"는 메세지도 실제 저장소가 부족해서가 아니라 권한 문제다" -_-;

- 끝 -


추가: 

[ID] 탭에서 사용계정을 "대화형 사용자"로 변경하면 8000401a 오류 가 발생한다.
이유는 대화형사용자의 경우 해당 콘솔에 접속한 상태가 유지되어야만 COM 사용시 해당 계정을 이용하여 실행하는데,
콘솔 접속 후면 정상적이지만 로그오프를 한다면 위 오류가 발생할 것이다.
해결책은 "다음 사용자"를 선택해여 직접 사용할 계정과 암호를 입력하여 등록하는 것이다.
나의 경우 admin 계정을 임시로 사용했으나 보안상 좋은 계정은 아니며 별도의 제한된 계정을 생성하여 등록하는게 좋다.