본문 바로가기

Programming

Visual Studio .NET에서 Office 2003 Web Components 사용


으.. 하다보니 이런것까지 손대는구나!!! ㅋㅋ

강좌 url 
http://support.microsoft.com/default.aspx?scid=kb;ko;823982

관련 컴포넌트 다운로드 url
http://www.microsoft.com/downloads/details.aspx?FamilyID=7287252c-402e-4f72-97a5-e0fd290d4b76&displaylang=ko

첨부파일은 아래설명대로 해서 나온 dll파일..

-----------------------------------------------------------------------------------
이 문서에서는 Microsoft Office 2003 Web Components의 클래스 래퍼를 수정하는 방법을 단계별로 설명합니다. 그런 다음 Microsoft Visual Studio .NET을 사용하여 만드는 응용 프로그램에서 클래스 래퍼의 이벤트를 관리할 수 있도록 클래스 래퍼를 다시 생성하는 방법을 설명합니다.

기본적으로 Microsoft Visual Studio .NET이 생성하는 클래스 래퍼는 다음 Office 2003 Web Components의 이벤트를 처리하도록 허용하지 않습니다.
  • 차트
  • 스프레드시트
  • 피벗 테이블
이러한 구성 요소의 이벤트를 처리하려면 클래스 래퍼의 소스 코드를 수정한 다음 코드를 다시 컴파일해야 합니다.

배경
Microsoft Visual Studio .NET은 event 인터페이스를 구현하는 event listener 클래스를 생성합니다. 이 event listener 클래스는 OWC(Office Web Components)에 전달됩니다. 그러면 OWC가 event 인터페이스를 호출하는 대신 IDispatch 인터페이스의 QueryInterface 메서드를 호출합니다. 하지만 생성된 클래스의 IDispatch 인터페이스에는 이벤트의 디스패치 식별자(DISPID)가 포함되어 있지 않습니다.

이 문제를 해결하려면 ClassInterfaceType.None 값을 사용하여 COM interop가 클래스 대신 인터페이스의 IDispatch를 반환하도록 생성된 클래스를 표시할 수 있습니다. IDispatch 인터페이스에는 이벤트의 DISPID가 포함됩니다.


클래스 래퍼를 수정하고 다시 작성하는 단계
  1. Visual Studio .NET 명령 프롬프트를 시작합니다.
  2. 명령 프롬프트에서 다음을 수행합니다.
    1. owc11이라는 디렉터리를 새로 만든 다음 이 디렉터리로 변경합니다.
      md c:\owc11

      cd c:\owc11
    2. Microsoft Windows Forms 래퍼에 대한 소스 코드를 C#으로 작성합니다.
      aximp "c:\program files\common files\microsoft shared\web components\11\owc11.dll" /source
    3. 생성된 어셈블리 AxOWC11.dll을 삭제합니다.
      del c:\owc11\axowc11.dll
  3. 메모장 같은 텍스트 편집기에서 C:\OWC11\AxOWC11.cs를 엽니다.
  4. 다음 예제와 같이 차트 구성 요소, 스프레드시트 구성 요소 및 피벗 테이블 구성 요소에 대해 생성된 클래스에 [ToolboxItem(true)]을 추가합니다.

    차트 구성 요소
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxChartSpace : System.Windows.Forms.AxHost { 
      	... 
     } 
    스프레드시트 구성 요소
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxSpreadsheet : System.Windows.Forms.AxHost {
     	 ... 
     } 
    피벗 테이블 구성 요소
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxPivotTable : System.Windows.Forms.AxHost {
     	 ... 
     } 
  5. 다음 예제와 같이 이벤트 클래스를 ClassInterfaceType.None으로 표시합니다.

    차트 구성 요소
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)] 
     public class AxChartSpaceEventMulticaster : OWC11.IChartEvents {
     	 ...
      } 
    스프레드시트 구성 요소
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)]
     public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink {
     	 ...
     } 
    피벗 테이블 구성 요소
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)] 
     public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents {
     	 ... 
     } 
  6. 변경 내용을 AxOWC11.cs에 저장합니다.
  7. Visual Studio .NET 명령 프롬프트에서 다음을 수행합니다.
    1. C:\Program Files\Microsoft.NET\Primary Interop AssembliesLIB 환경 변수에 추가합니다.
      set lib=c:\program files\microsoft.net\primary interop assemblies;%path%
    2. Microsoft Office 2003 기본 Interop 어셈블리가 설치된 GAC에서 Microsoft.Office.Interop.OWC11.dllMSComCtl.dll을 복사합니다.
      copy %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll

      copy %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll
    3. 소스 파일 AxOWC11.cs를 컴파일합니다.
      csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
      참고 다음과 같은 CS0108 오류 메시지가 나타납니다.
      new 키워드가 필요합니다.
      이 오류는 무시해도 됩니다.
  8. Visual Studio .NET을 시작합니다.
  9. 새로 컴파일된 AxOWC11.dll도구 상자에 추가합니다.
    1. 도구 메뉴에서 도구 상자 사용자 지정(Visual Studio .NET 2002)이나 도구 상자 항목 추가/제거(Visual Studio .NET 2003)를 누른 다음 .NET Framework 구성 요소 탭을 누릅니다.
    2. .NET Framework 구성 요소 탭에서 찾아보기를 누릅니다.
    3. 파일 이름 텍스트 상자에 c:\owc11\axowc11.dll을 입력합니다. 열기를 누릅니다.
    4. 확인을 눌러 도구 상자 사용자 지정 대화 상자를 닫습니다.
Microsoft Visual Basic .NET 프로젝트나 Microsoft Visual C# .NET 프로젝트를 새로 만들면 도구 상자일반 탭에 있는 컨트롤 목록에 AxChartSpace 컨트롤, AxPivotTable 컨트롤 및 AxSpreadsheet 컨트롤이 포함되어 있습니다. 이러한 구성 요소를 폼에 추가할 수 있습니다.