Como utilizar o controlo WebBrowser para abrir documentos do Office no Visual C# 2005 ou no Visual C# .NET

Traduções de Artigos Traduções de Artigos
Artigo: 304662 - Ver produtos para os quais este artigo se aplica.
Para obter uma Microsoft Visual Basic .NET versão deste artigo, consulte 304643.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

É aconselhável para apresentar ou incorporar um documento do Microsoft Office directamente no formulário do Microsoft Visual C#. Microsoft Visual C# 2005 e o Microsoft Visual C# .NET não fornecem um controlo OLE permite-lhe incorporar um documento do Office num formulário. Se pretende incorporar um documento existente e abri-lo como um objecto de documento ActiveX directa num formato Visual C#, uma solução potencial para é utilizar o controlo WebBrowser da Microsoft.

Este artigo demonstra como navegar para um documento existente do Office e a apresentação num formulário do Visual C# utilizando o controlo WebBrowser.

Mais Informação

Documentos do ActiveX são objectos OLE incorporáveis se comportam mais como controlos ActiveX de objectos OLE tradicionais. Ao contrário de um objecto incorporado tradicional, um documento ActiveX não foi concebido para ser um objecto contido num documento maior. Em vez disso, é considerada em si um documento completo que apenas está a ser visualizado (como, por exemplo, com o Microsoft Internet Explorer) ou a ser recolhidos para um único recurso com outros documentos (tal como um ficheiro do Arquivador do Microsoft Office). Um documento ActiveX hospedado o controlo WebBrowser está sempre activo; assim, ao contrário de objectos OLE incorporado tradicionais, existe sem sentido de activação directa.

Apesar de Visual C# 2005 e Visual C# .NET não actualmente suportarem anfitrião documentos do ActiveX directamente, pode utilizar o controlo WebBrowser para esta finalidade. O controlo WebBrowser (Shdocvw.dll) faz parte do Internet Explorer e só pode ser utilizado em sistemas que tenham o Internet Explorer instalado.

Criar uma aplicação do Visual C# que abre documentos do Office

Para criar uma aplicação do Visual C# que abre documentos do Office, siga estes passos:
  1. Crie um novo projecto de aplicação do Windows no Visual C# 2005 ou no Visual C#. NET. É criado o Form1 por predefinição.

    Nota No Visual C# 2005, se não é possível localizar o ficheiro SHDocVw.dll ou o ficheiro AxSHDocVw.dll, execute o seguinte comando na linha de comandos Visual Studio:
    aximp %WINDIR%\system32\shdocvw.dll
    Em seguida, crie um proxy de runtime de idioma comum (SHDocVw.dll) e um proxy de Windows Forms (AxSHDocVw.dll) para o controlo do Microsoft Web Browser. Para adicionar os ficheiros DLL no Visual C# 2005, siga estes passos:
    1. No menu projecto , clique em Add Reference .
    2. Na caixa de diálogo Adicionar referência do , clique em Procurar .
    3. Localize e seleccione o ficheiro AxSHDocVw.dll e o ficheiro SHDocVw.dll.
    4. Para adicionar referências de projecto para estes dois ficheiros, clique em OK .
  2. No menu Ferramentas , clique em Personalizar ToolBox para abrir a caixa de diálogo Personalizar ToolBox . No separador Componentes COM , adicione uma referência à Microsoft WebBrowser . Clique em OK para adicionar o controlo WebBrowser à caixa de ferramentas Formulários do Windows. O controlo WebBrowser é apresentada com o texto Explorer na caixa de ferramentas.

    Nota No Visual Studio 2005, não é necessário passo 2.
  3. Utilizando a caixa de ferramentas, adicione um controlo WebBrowser, um controlo OpenFileDialog e um controlo CommandButton ao Form1. Esta acção adiciona as variáveis de membros AxWebBrowser1 OpenFileDialog1 e Button1 à classe Form1 . No Visual C# 2005, são adicionadas as variáveis de membros webBrowser1 openFileDialog1 e button1 .
  4. No Form1, faça duplo clique em Button1 . Esta acção adiciona o evento Button1_Click ao Form1.
  5. Na janela código do Form1, adicione o seguinte espaço de nomes à lista:
    using System.Reflection;
    					
  6. Definir membro privado na classe Form1 da seguinte forma:
    private Object oDocument; 
  7. No fim do método InitializeComponent da classe Form1 , adicione o seguinte código para processar eventos Form1_Load Form1_Closed e axWebBrowser1_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. Substituir o seguinte código
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    com:
    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() ); 
    }
    					
    NOTA: tem de alterar o código do Visual Studio 2005. Por predefinição, Visual C# adiciona um formulário ao projecto quando cria um projecto de Windows Forms. O formulário é denominado Form1. Os dois ficheiros que representam o formulário são denominados Form1.cs e Form1.Designer.cs. Tem de escrever o código no Form1.cs. O ficheiro Form1.Designer.cs é onde o Windows Forms Designer escreve o código que implementa todas as acções efectuadas arrastando e largando controlos da caixa de ferramentas.

    Para obter mais informações sobre o Windows Forms Designer no Visual C# 2005, visite o seguinte Microsoft Developer Network) Web site da MSDN:
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx
  9. Prima F5 para executar o projecto. Quando clica em Procurar , a caixa de diálogo Abrir aparece e permite-lhe procurar um documento do Word, uma folha de cálculo do Excel ou uma apresentação do PowerPoint. Seleccione qualquer ficheiro e, em seguida, clique em Abrir . O documento abre dentro do controlo WebBrowser e é apresentada uma caixa de mensagem apresenta o nome do servidor de documentos do Office.

O que a considerar quando utiliza o controlo WebBrowser

Deverá considerar o seguinte quando utiliza o controlo WebBrowser:
  • O controlo WebBrowser navega para documentos de modo assíncrono. Quando chama WebBrowser1.Navigate , a chamada devolve o controlo para o Visual C# aplicação antes do documento foi completamente carregado. Se pretender automatizar o documento incluído, terá de utilizar o evento NavigateComplete2 para ser notificado quando o documento foi carregado. Utilize a propriedade de documento do objecto WebBrowser é transmitido para obter uma referência para o objecto de documento do Office, que, no código anterior, está definida como oDocument .
  • O controlo WebBrowser não suporta a intercalação de menu.
  • Na Internet Explorer 5.0 e versões posteriores, pode apresentar barras de ferramentas ancoradas utilizando o seguinte código:
     // 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);
    					
  • Existem vários problemas conhecidos com existência de mais do que um controlo WebBrowser num projecto e ter cada controlo carregado com o mesmo tipo de documento do Office (ou seja, todos os documentos do Word ou todas as folhas de cálculo Excel). Microsoft recomenda que utilize apenas um controlo para cada projecto e, navegue para um documento ao mesmo tempo.

    O problema mais comum é com barras de comandos do Microsoft Office, que aparecem desactivadas. Se tiver dois controlos WebBrowser no mesmo formulário, os quais são carregados com documentos do Word e se tiver apresentado barras de ferramentas utilizando uma das técnicas anteriores, apenas um conjunto de barras de ferramentas está activo e funciona correctamente. A outra está desactivada e não pode ser utilizada.
  • Para limpar o controlo WebBrowser do respectivo conteúdo actual, no evento Click de outro botão de comando (ou qualquer outro local apropriado do código), navegue para a página em branco predefinida utilizando o seguinte código:
       AxWebBrowser1.Navigate("about:blank");
    					

O que a considerar quando utiliza o controlo WebBrowser juntamente com um programa do Microsoft Office de 2007

Por predefinição, os programas do Office de 2007 não abrem documentos do Office no browser. Este comportamento também afecta o controlo WebBrowser. Recomendamos que utilize um contentor de documento ActiveX personalizado em vez do controlo WebBrowser quando desenvolver aplicações que abra documentos do Office 2007. Para obter mais informações sobre contentores de documento ActiveX personalizados, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
311765Controlo ActiveX da C++ Visual para hospedar documentos do Office no Visual Basic ou HTML
Para aplicações existentes que necessitem de retro-compatibilidade com o controlo WebBrowser, pode modificar o registo para configurar o Internet Explorer. Pode utilizar este método para configurar o Internet Explorer para abrir documentos do Office 2007 no Web browser. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
927009É aberta uma janela nova quando tenta visualizar um documento de programa do Microsoft Office 2007 no Windows Internet Explorer 7
Nota Se modificar o registo utilizando o método é mencionado no artigo de base de dados de conhecimento da Microsoft 927009, as alterações afectam o controlo WebBrowser que utilizar na aplicação. As alterações também afectam todas as instâncias do Internet Explorer. Além disso, este método poderá não funcionar para quaisquer versões futuras do conjuntos do Microsoft Office. Por conseguinte, recomendamos que utilize este método apenas para compatibilidade com uma aplicação existente.

Referências

Para obter mais informações sobre como utilizar o controlo WebBrowser, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
304562Visual Studio 2005 e Visual Studio .NET não fornecem um controlo de contentor OLE para Windows Forms
243058Como utilizar o controlo WebBrowser para abrir um documento do Office
162719Como utilizar o controlo WebBrowser do Visual Basic 5.0
202476Erro: Não é possível editar o documento do Word no controlo OLE ou WebBrowser
188271Como imprimir conteúdo do controlo browser da Web a partir de VB
191692Shdocvw.dll não está incluído no pacote de configuração PDW
238313Acesso do modelo de objecto de documento do Internet Explorer a partir do Visual Basic
927009É aberta uma janela nova quando tenta visualizar um documento de programa do Microsoft Office 2007 no Windows Internet Explorer 7

Propriedades

Artigo: 304662 - Última revisão: 14 de setembro de 2007 - Revisão: 9.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
Palavras-chave: 
kbmt kbactivedocs kbautomation kbhowto kbwebbrowser KB304662 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 304662

Submeter comentários

 

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