Utilizzo del controllo WebBrowser per aprire un documento di Office in Visual C# 2005 o Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 304662 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I304662
Per la versione di questo articolo relativa a Microsoft Visual Basic .NET, vedere 304643.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Potrebbe essere necessario visualizzare o incorporare un documento di Office direttamente in un form di Microsoft Visual C#. Microsoft Visual C# 2005 e Microsoft Visual C# .NET non includono un controllo OLE che consenta di incorporare un documento di Office in un form. Se si desidera incorporare un documento esistente e aprirlo sul posto come un oggetto documento ActiveX in un form di Visual C#, una possibile soluzione consiste nell'utilizzare il controllo Microsoft WebBrowser.

In questo articolo viene illustrato come cercare un documento di Office esistente e come visualizzarlo in un form di Visual C# utilizzando il controllo WebBrowser.

Informazioni

I documenti ActiveX sono oggetti OLE incorporabili con un comportamento pi¨ simile ai controlli ActiveX che non ai tradizionali oggetti OLE. A differenza degli oggetti incorporati, un documento ActiveX non Ŕ stato progettato come oggetto contenibile in un documento pi¨ grande. ╚ invece considerato un documento completo a sÚ stante, che viene semplicemente visualizzato, ad esempio con Microsoft Internet Explorer, o incluso in un'unica risorsa insieme ad altri documenti, come ad esempio un file del Raccoglitore di Microsoft Office. Un documento ActiveX contenuto nel controllo WebBrowser Ŕ sempre attivo, quindi, a differenza dei tradizionali oggetti OLE incorporati, l'attivazione sul posto Ŕ inutile.

Anche se in Visual C# 2005 e Visual C# .NET non Ŕ attualmente supportato l'hosting diretto di documenti ActiveX, Ŕ possibile utilizzare il controllo WebBrowser a questo scopo. Il controllo WebBrowser (Shdocvw.dll) fa parte di Internet Explorer e pu˛ essere utilizzato solo nei sistemi in cui Ŕ installato Internet Explorer.

Creazione di un'applicazione di Visual C# .NET per l'apertura di documenti di Office

Per creare un'applicazione di Visual C# che apra documenti di Office, attenersi alla seguente procedura:
  1. Creare un nuovo progetto di Applicazione Windows in Visual C# 2005 o in Visual C# .NET. Per impostazione predefinita, viene creato il progetto Form1.
  2. Scegliere Personalizza Casella degli strumenti dal menu Strumenti per visualizzare la finestra di dialogo Personalizza Casella degli strumenti. Nella scheda Componenti COM aggiungere un riferimento a Microsoft Web Browser. Scegliere OK per aggiungere il controllo WebBrowser alla Casella degli strumenti Windows Form. Il controllo WebBrowser verrÓ visualizzato con il testo Explorer nella Casella degli strumenti.

    Nota In Visual Studio 2005 non Ŕ necessario eseguire il passaggio 2.
  3. Tramite la Casella degli strumenti aggiungere un controllo WebBrowser, un controllo OpenFileDialog e un controllo CommandButton a Form1. Verranno aggiunte le variabili membro AxWebBrowser1, OpenFileDialog1 e Button1 alla classe Form1.
  4. Nel Form1 fare doppio clic su Button1. Viene aggiunto l'evento Button1_Click a Form1.
  5. Nella finestra del codice del progetto Form1 aggiungere il seguente spazio dei nomi all'elenco:
    using System.Reflection;
    					
  6. Definire un membro privato nella classe Form1 come segue:
    private Object oDocument; 
  7. Alla fine del metodo InitializeComponent della classe Form1 aggiungere il seguente codice per gestire gli eventi 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. Sostituire il seguente codice
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    con:
    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() ); 
    }
    					
    Note ╚ necessario modificare il codice in Visual Studio 2005. Per impostazione predefinita, in Visual C# viene aggiunto un form al progetto quando si crea un progetto Windows Form. Il nome del form Ŕ Form1. I due file che rappresentano il form sono denominati Form1.cs e Form1.designer.cs. Il codice viene scritto in Form1.cs. Nel file Form1.designer.cs Progettazione Windows Form scrive il codice che implementa tutte le azioni eseguite trascinando e rilasciando i controlli dalla Casella degli strumenti.

    Per ulteriori informazioni su Progettazione Windows Form in Visual C# 2005, visitare il seguente sito Web Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/it-it/library/ms173077(vs.80).aspx
  9. Premere F5 per eseguire il progetto. Scegliendo Sfoglia viene visualizzata la finestra di dialogo Apri tramite la quale Ŕ possibile passare a un file di Word, a un foglio di lavoro di Excel o a una presentazione di PowerPoint. Selezionare un file, quindi scegliere Apri. Il documento viene aperto nel controllo WebBrowser e in una finestra di messaggio viene visualizzato il nome del server con il documento di Office.

Considerazioni sull'utilizzo del controllo WebBrowser

Quando si utilizza il controllo WebBrowser tenere presente quanto segue:
  • Il controllo WebBrowser ricerca i documenti in modo asincrono. Quando si chiama WebBrowser1.Navigate, viene restituito il controllo all'applicazione di Visual C# prima che il documento sia stato caricato completamente. Se si prevede di automatizzare il documento contenuto, Ŕ necessario utilizzare l'evento NavigateComplete2 per essere informati quando il documento Ŕ stato caricato completamente. Utilizzare la proprietÓ Document dell'oggetto WebBrowser passata per ottenere un riferimento all'oggetto documento di Office, che nel codice precedente Ŕ impostata su oDocument.
  • Il controllo WebBrowser non supporta l'unione di menu.
  • Nelle versioni di Internet Explorer 5.0 e successive Ŕ possibile visualizzare le barre degli strumenti ancorate utilizzando il seguente codice:
     // 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);
    					
  • Esistono numerosi problemi noti che si verificano se si utilizzano pi¨ controlli WebBrowser in un progetto e se ogni controllo viene caricato con lo stesso tipo di documento di Office, ovvero documenti di Word o fogli di lavoro di Excel. Si consiglia di utilizzare un solo controllo per progetto e cercare un documento alla volta.

    Il problema pi¨ comune riguarda le barre dei comandi di Microsoft Office che appaiono disattivate. Se nello stesso form sono presenti due controlli WebBrowser entrambi caricati con documenti di Word e se le barre degli strumenti sono visualizzate utilizzando una delle tecniche precedenti, sarÓ attivo e funzionerÓ correttamente solo un set di barre degli strumenti. L'altro sarÓ disattivato e non potrÓ essere utilizzato.
  • Per cancellare il contenuto corrente di WebBrowser, nell'evento Click di un altro pulsante di comando oppure in un altro punto appropriato del codice, passare alla pagina vuota predefinita utilizzando il seguente codice:
       AxWebBrowser1.Navigate("about:blank");
    					

Riferimenti

Per ulteriori informazioni sull'utilizzo del controllo WebBrowser, fare clic sui numeri degli articoli della Knowledge Base riportati di seguito:
304562 INFO: Visual Studio .NET non fornisce un controllo contenitore OLE per Win Forms
243058 Utilizzo del controllo WebBrowser per aprire un documento di Office
162719 Utilizzo del controllo WebBrowser da Visual Basic 5.0
202476 BUG: Impossibile modificare un documento di Word nel controllo OLE o WebBrowser
188271 Stampa del contenuto del controllo WebBrowser da VB
191692 PRB: Shdocvw.dll non Ŕ incluso nel pacchetto di installazione di PDW
238313 PRB: Accesso al modello a oggetti dei documenti di Internet Explorer da Visual Basic

ProprietÓ

Identificativo articolo: 304662 - Ultima modifica: martedý 23 gennaio 2007 - Revisione: 7.1
Le informazioni in questo articolo si applicano a
  • Microsoft Visual C# 2005
  • 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
Chiavi:á
kbactivedocs kbautomation kbhowto kbwebbrowser KB304662
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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