Visual C# .NET에서 WebBrowser 컨트롤을 사용하여 Office 문서를 여는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 304662 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR304662
이 문서의 Microsoft Visual Basic .NET 버전을 보려면 304643을 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft Office 문서를 Microsoft Visual C# .NET 폼에 직접 표시하거나 포함시키려고 할 수 있습니다. Visual C# .NET에서는 폼에 Office 문서를 포함시킬 수 있는 OLE 컨트롤을 제공하지 않습니다. Visual C# .NET 폼에 기존 문서를 포함시켜서 이를 현재 위치의 ActiveX 문서 개체로서 열려는 경우 Microsoft WebBrowser 컨트롤을 사용하는 것도 한 가지 가능한 방법입니다.

이 문서에서는 WebBrowser 컨트롤을 사용하여 Visual C# .NET 폼 내에서 기존의 Office 문서를 탐색하고 표시하는 방법을 설명합니다.

추가 정보

ActiveX 문서는 삽입 가능한 OLE 개체로서, 기존 OLE 개체보다는 ActiveX 컨트롤과 비슷하게 동작합니다. 기존의 포함 개체와 달리 ActiveX 문서는 더 큰 문서에 포함되도록 설계되지 않았습니다. 대신, ActiveX 문서는 자체적으로 완전한 문서로 간주되어 Microsoft Internet Explorer과 같은 응용 프로그램을 사용하여 표시되거나 Microsoft Office Binder 파일 같은 다른 문서와 함께 단일 리소스로 수집됩니다. WebBrowser 컨트롤에서 호스트되는 ActiveX 문서는 항상 활성화되어 있으므로 기존의 OLE 포함 개체와 달리 현재 위치 활성화라는 의미가 없습니다.

현재 Microsoft Visual C# .NET에서는 ActiveX 문서를 직접 호스트할 수 없지만 이러한 목적으로 WebBrowser 컨트롤을 사용할 수 있습니다. WebBrowser 컨트롤(Shdocvw.dll)은 Internet Explorer의 일부분으로 Internet Explorer를 설치한 시스템에서만 사용할 수 있습니다.

Office 문서를 여는 Visual C# .NET 응용 프로그램 만들기

Office 문서를 여는 Visual C# .NET 응용 프로그램을 만드는 방법은 다음과 같습니다.
  1. Visual C# .NET에서 새 Windows 응용 프로그램 프로젝트를 만듭니다. 기본적으로 Form1이 만들어집니다.
  2. 도구 메뉴에서 도구 상자 사용자 지정을 눌러 도구 상자 사용자 지정 대화 상자를 엽니다. COM 구성 요소 탭에서 Microsoft WebBrowser에 대한 참조를 추가합니다. 확인을 눌러 Windows Form 도구 상자에 WebBrowser 컨트롤을 추가합니다. 도구 상자에 Explorer라는 텍스트를 가진 WebBrowser 컨트롤이 나타납니다.
  3. 이 도구 상자를 사용하여 WebBrowser 컨트롤, OpenFileDialog 컨트롤 및 CommandButton 컨트롤을 Form1에 추가합니다. 그러면 Form1 클래스에 AxWebBrowser1, OpenFileDialog1Button1 구성원이 추가됩니다.
  4. Form1에서 Button1을 두 번 누릅니다. 이렇게 하면 Form1에 Button1_Click 이벤트가 추가됩니다.
  5. Form1의 코드 창에서 다음 네임스페이스를 목록에 추가합니다.
     using System.Reflection; 					
  6. Form1 클래스의 private 멤버를 아래와 같이 정의합니다.
    private Object oDocument; 
  7. Form1 클래스의 InitializeComponent 메서드 끝에 Form1_Load, Form1_ClosedaxWebBrowser1_NavigateComplete2 이벤트를 처리하는 다음 코드를 추가합니다.
    this.axWebBrowser1.NavigateComplete2 += new AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.axWebBrowser1_NavigateComplete2);
    this.Load += new System.EventHandler(this.Form1_Load);
    this.Closed += new System.EventHandler(this.Form1_Closed);
    					
  8. 다음 코드를
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    아래의 코드로 대체합니다.
    private void button1_Click(object sender, System.EventArgs e)
    {
    
     String  strFileName;
    
     //Find the Office document.
     openFileDialog1.FileName = "";
     openFileDialog1.ShowDialog();
     strFileName = openFileDialog1.FileName;
    	        
     //If the user does not cancel, open the document.
     if(strFileName.Length != 0)
     {
      Object refmissing = System.Reflection.Missing.Value;
      oDocument = null;
      axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
     }
    }
    
    public void Form1_Load(object sender, System.EventArgs e)
    {
     button1.Text = "Browse";
     openFileDialog1.Filter = "Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt" ;
     openFileDialog1.FilterIndex = 1;
    }
    
    public void Form1_Closed(object sender, System.EventArgs e)
    {
     oDocument = null;
    }
    
    public void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e)
    {
    
     //Note: You can use the reference to the document object to 
     //      automate the document server.
    
     Object o = e.pDisp;
       
     oDocument = o.GetType().InvokeMember("Document",BindingFlags.GetProperty,null,o,null);
    			
     Object oApplication = o.GetType().InvokeMember("Application",BindingFlags.GetProperty,null,oDocument,null);
    
     Object oName = o.GetType().InvokeMember("Name",BindingFlags.GetProperty ,null,oApplication,null);
    
     MessageBox.Show("File opened by: " + oName.ToString() ); 
    }
    					
  9. F5 키를 눌러 프로젝트를 실행합니다. Browse를 누르면 열기 대화 상자가 나타나며 이 대화 상자를 통해 Word 문서, Excel 워크시트 또는 PowerPoint 프레젠테이션을 탐색할 수 있습니다. 파일을 선택한 다음 열기를 누릅니다. WebBrowser 컨트롤 내에서 문서가 열리고 해당 Office 문서 서버의 이름을 표시하는 메시지 상자가 나타납니다.

WebBrowser 컨트롤 사용 시 고려 사항

WebBrowser 컨트롤을 사용할 때 다음 사항을 고려해야 합니다.
  • WebBrowser 컨트롤은 문서를 비동기적으로 탐색합니다. WebBrowser1.Navigate를 호출하면 문서를 완전히 로드하기 전에 해당 Visual C# 응용 프로그램에 제어가 반환됩니다. 포함된 문서를 자동화할 계획이라면 해당 문서가 완전히 로드된 시기를 알리도록 NavigateComplete2 이벤트를 사용해야 합니다. Office 문서 개체에 대한 참조를 가져오기 위해 전달되는 WebBrowser 개체의 Document 속성(이전 코드에서 oDocument로 설정됨)을 사용합니다.
  • WebBrowser 컨트롤은 메뉴 병합을 지원하지 않습니다.
  • Internet Explorer 버전 5.0 이상에서는 다음 코드를 사용하여 도킹된 도구 모음을 표시할 수 있습니다.
     // This is a toggle option, so call it once to show the 
     // toolbars and once to hide them. This works with Internet Explorer 5
     // but often fails to work properly with earlier versions.
     
     Object refmissing = System.Reflection.Missing.Value;
     axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,ref refmissing , ref refmissing);
    					
  • 하나의 프로젝트에서 둘 이상의 WebBrowser 컨트롤을 사용하여 동일한 종류의 Office 문서를 로드하면 문제가 발생하는 것으로 알려져 있습니다. 즉, 컨트롤 모두 Word 문서만 로드하거나 Excel 스프레드시트만 로드하는 경우 문제가 발생합니다. 프로젝트당 컨트롤을 하나만 사용하고 한 번에 하나의 문서만 탐색하는 것이 좋습니다.

    가장 일반적인 문제는 Microsoft Office 명령 모음이 사용할 수 없는 것처럼 나타나는 것입니다. 같은 폼에 WebBrowser 컨트롤이 두 개 있고, 두 컨트롤 모두 Word 문서를 로드하며, 앞의 예제 코드를 사용하여 도구 모음을 표시한 경우 하나의 도구 모음만 활성화되어 제대로 작동합니다. 다른 도구 모음은 사용 할 수 없는 상태가 될 수 있습니다.
  • 다른 명령 단추의 Click 이벤트(또는 적절한 코드 부분)에서 WebBrowser의 현재 내용을 지우려면 아래의 코드를 사용하여 기본 빈 페이지로 이동하도록 합니다.
        AxWebBrowser1.Navigate("about:blank"); 					

참조

WebBrowser 컨트롤을 사용하는 데 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
304562 INFO: Visual Studio .NET에서는 Win Forms용 OLE 컨테이너 컨트롤을 제공하지 않는다
243058 WebBrowser 컨트롤을 사용하여 Office 문서를 여는 방법
162719 Visual Basic 5.0에서 WebBrowser 컨트롤을 사용하는 방법
202476 BUG: OLE 또는 WebBrowser 컨트롤에서 Word 문서를 편집할 수 없다
188271 VB에서 Web Browser 컨트롤의 내용을 인쇄하는 방법
191692 PRB: Shdocvw.dll이 PDW 설치 패키지에 포함되지 않는다
238313 PRB: Visual Basic에서 Internet Explorer 문서 개체 모델 액세스




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 304662 - 마지막 검토: 2005년 9월 16일 금요일 - 수정: 6.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
키워드:?
kbhowto kbactivedocs kbwebbrowser kbautomation KB304662

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com