Comment faire pour utiliser le contrôle WebBrowser pour ouvrir des documents Office dans Visual C# 2005 ou Visual C# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 304662 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F304662
Pour vous procurer une version Microsoft Visual Basic .NET de cet article, reportez-vous à l'article 304643.
Agrandir tout | Réduire tout

Sommaire

Résumé

Vous pouvez vouloir afficher ou incorporer un document Office directement dans un formulaire Microsoft Visual C#. Microsoft Visual C# 2005 et Microsoft Visual C# .NET ne fournissent pas de contrôle OLE vous permettant d'incorporer un document Office dans un formulaire. Si vous voulez incorporer un document existant et l'ouvrir sous la forme d'un document ActiveX dans un formulaire Visual C#, vous pouvez utiliser le contrôle Microsoft WebBrowser.

Cet article explique comment rechercher un document Office existant et l'afficher dans un formulaire Visual C# à l'aide du contrôle WebBrowser.

Plus d'informations

Les documents ActiveX sont des objets OLE incorporables qui se rapprochent plus des contrôles ActiveX que des objets OLE traditionnels. Contrairement à un objet incorporé traditionnel, un document ActiveX n'est pas conçu pour être un objet contenu dans un document plus important. Il est plutôt considéré comme un document à part entière qui est simplement affiché (par exemple avec Microsoft Internet Explorer) ou collecté dans une ressource unique avec d'autres documents (par exemple un fichier Classeur de Microsoft Office). Un document ActiveX hébergé dans le contrôle WebBrowser est toujours actif ; par conséquent, contrairement aux objets incorporés OLE traditionnels, l'activation sur place n'a pas de sens.

Bien que Visual C# 2005 et Visual C# .NET ne prennent pas actuellement en charge l'hébergement direct de documents ActiveX, vous pouvez utiliser le contrôle WebBrowser à cette fin. Le contrôle WebBrowser (Shdocvw.dll) fait partie d'Internet Explorer et ne peut être utilisé que sur des systèmes sur lesquels celui-ci est installé.

Création d'une application Visual C# .NET qui ouvre des documents Office

Pour créer une application Visual C# qui ouvre des documents Office, procédez comme suit :
  1. Créez un projet d'application Windows dans Visual C# 2005 ou Visual C# .NET. Form1 est créé par défaut.
  2. Dans le menu Outils, cliquez sur Personnaliser la boîte à outils pour ouvrir la boîte de dialogue Personnaliser la boîte à outils. Sous l'onglet Composants COM, ajoutez une référence au contrôle Microsoft WebBrowser. Cliquez sur OK pour ajouter le contrôle WebBrowser à la boîte à outils Windows Forms. Le contrôle WebBrowser s'affiche avec le texte Explorer dans la boîte à outils.

    Remarque Dans Visual Studio 2005, l'étape 2 n'est pas nécessaire.
  3. À l'aide de la boîte à outils, ajoutez un contrôle WebBrowser, un contrôle OpenFileDialog et un contrôle CommandButton à Form1. Cela ajoute les variables membres AxWebBrowser1, OpenFileDialog1 et Button1 à la classe Form1.
  4. Dans Form1, double-cliquez sur Button1. Cela ajoute l'événement Button1_Click à Form1.
  5. Dans la fenêtre de code pour Form1, ajoutez l'espace de noms suivant à la liste :
    using System.Reflection;
    					
  6. Définissez un membre privé dans la classe Form1 comme suit :
    private Object oDocument; 
  7. À la fin de la méthode InitializeComponent de la classe Form1, ajoutez le code suivant pour gérer les événements Form1_Load, Form1_Closed et 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. Remplacez le code suivant :
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    par :
    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() ); 
    }
    					
    Remarque Vous devez modifier le code dans Visual Studio 2005. Par défaut, Visual C# ajoute un formulaire au projet lorsque vous créez un projet Windows Forms. Le formulaire est nommé Form1. Les deux fichiers qui représentent le formulaire sont nommés Form1.cs et Form1.designer.cs. Vous écrivez le code dans Form1.cs. Le fichier Form1.designer.cs désigne l'emplacement où le Concepteur Windows Forms écrit le code chargé d'implémenter l'ensemble des actions que vous effectuez en réalisant un glisser-déplacer des contrôles à partir de la boîte à outils.

    Pour plus d'informations sur le Concepteur Windows Forms de Visual C# 2005, reportez-vous au site Web MSDN (Microsoft Developer Network) à l'adresse suivante (en anglais) :
    http://msdn2.microsoft.com/en-us/library/ms173077.aspx
  9. Appuyez sur F5 pour exécuter le projet. Lorsque vous cliquez sur Parcourir, la boîte de dialogue Ouvrir qui s'affiche vous permet de rechercher un fichier Word, une feuille de calcul Excel ou une présentation PowerPoint. Sélectionnez le fichier de votre choix, puis cliquez sur Ouvrir. Le document s'ouvre dans le contrôle WebBrowser et un message indiquant le nom du serveur de documents Office s'affiche.

Considérations à prendre en compte lors de l'utilisation du contrôle WebBrowser

Tenez compte des points suivants lorsque vous utilisez le contrôle WebBrowser :
  • Le contrôle WebBrowser parcourt les documents de façon asynchrone. Lorsque vous appelez WebBrowser1.Navigate, l'appel renvoie le contrôle à votre application Visual C# avant le chargement complet du document. Si vous envisagez d'automatiser le document contenu, vous devez utiliser l'événement NavigateComplete2 pour être averti de la fin du chargement du document. Utilisez la propriété Document de l'objet WebBrowser qui est passé pour obtenir une référence à l'objet de document Office qui, dans le code précédent, est défini sur oDocument.
  • Le contrôle WebBrowser ne prend pas en charge la fusion de menus.
  • Les versions plus récentes d'Internet Explorer (5.0 et ultérieures) vous permettent également d'afficher des barres d'outils ancrées à l'aide du code suivant :
     // 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);
    					
  • Il existe plusieurs problèmes connus liés à la présence de plusieurs contrôles WebBrowser dans un projet et au chargement de chacun des contrôles avec le même type de document Office (à savoir, uniquement des documents Word ou uniquement des feuilles de calcul Excel). Il est recommandé de n'utiliser qu'un seul contrôle par projet et de ne rechercher qu'un document à la fois.

    Le problème le plus courant concerne les barres de commandes Office qui apparaissent désactivées. Si vous avez deux contrôles WebBrowser sur le même formulaire, tous deux chargés avec des documents Word, et que vous avez affiché les barres d'outils à l'aide de l'une des techniques précédemment citées, un seul groupe de barres d'outils est actif et fonctionne correctement. L'autre est désactivé et ne peut pas être utilisé.
  • Pour effacer le contenu en cours du contrôle WebBrowser, dans l'événement Click d'un autre bouton de commande (ou à un autre endroit approprié dans votre code), naviguez jusqu'à la page vierge par défaut en utilisant le code suivant :
       AxWebBrowser1.Navigate("about:blank");
    					

Références

Pour plus d'informations sur l'utilisation du contrôle WebBrowser, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
304562INFO : Visual Studio .NET ne fournit pas de contrôle conteneur OLE pour les Win Forms (F304562)
243058 Comment faire pour utiliser le contrôle WebBrowser pour ouvrir un document Office
162719 Comment faire pour utiliser le contrôle WebBrowser à partir de Visual Basic 5.0
202476 BOGUE : Impossible de modifier le document Word dans un contrôle OLE ou WebBrowser
188271 Comment faire pour imprimer le contenu du contrôle WebBrowser à partir de Visual Basic
191692PROBLÈME : Shdocvw.dll n'est pas inclus dans le package d'installation PDW
238313PROBLÈME : Accès au modèle d'objet de document Internet Explorer à partir de Visual Basic

Propriétés

Numéro d'article: 304662 - Dernière mise à jour: mercredi 4 octobre 2006 - Version: 7.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002
  • Microsoft Excel 2000 Standard
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard
  • Microsoft PowerPoint 2000 Standard
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
Mots-clés : 
kbhowto kbactivedocs kbwebbrowser kbautomation KB304662
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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