Huomautus
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tämän artikkelin Microsoft Visual Basic .NET -versio on kohdassa 304643.
Yhteenveto
Haluat ehkä näyttää tai upottaa Microsoft Office -asiakirjan suoraan Microsoft Visual C# -lomakkeeseen. Microsoft Visual C# 2005 ja Microsoft Visual C# .NET eivät tarjoa OLE-ohjausobjektia, jonka avulla voit upottaa Office-asiakirjan lomakkeeseen. Jos haluat upottaa aiemmin luodun asiakirjan ja avata sen valmiina ActiveX-asiakirjaobjektina Visual C#-lomakkeessa, voit ehkä käyttää Microsoft WebBrowser -ohjausobjektia.
Tässä artikkelissa kerrotaan, miten voit selata olemassa olevaa Office-asiakirjaa ja miten se näytetään Visual C#-lomakkeessa WebBrowser-ohjausobjektin avulla.
Lisätietoja
ActiveX-asiakirjat ovat upotettavia OLE-objekteja, jotka toimivat paremmin ActiveX-komponenttien kuin perinteisten OLE-objektien tavoin. Toisin kuin perinteisessä upotetussa objektissa, ActiveX-tiedostoa ei ole suunniteltu suuremman asiakirjan sisältämäksi objektiksi. Sitä pidetään sen sijaan täydellisenä asiakirjana, jota tarkastellaan (esimerkiksi Microsoft Internet Explorerilla) tai kerätään yhteen resurssiin muiden asiakirjojen kanssa (kuten Microsoft Office -nitojatiedosto). WebBrowser-ohjausobjektissa isännöity ActiveX-tiedosto on aina aktiivinen. Toisin kuin perinteisissä upotetuissa OLE-objekteissa, aktivointia ei siis ole olemassa.
Vaikka Visual C# 2005 ja Visual C# .NET eivät tällä hetkellä tue ActiveX-asiakirjojen isännöintiä suoraan, voit käyttää WebBrowser-ohjausobjektia tähän tarkoitukseen. WebBrowser-ohjausobjekti (Shdocvw.dll) on osa Internet Exploreria, ja sitä voi käyttää vain järjestelmissä, joihin on asennettu Internet Explorer.
Office-tiedostoja avaavan Visual C#-sovelluksen luominen
Jos haluat luoda Visual C#-sovelluksen, joka avaa Office-asiakirjoja, toimi seuraavasti:
Luo uusi Windows-sovellusprojekti Visual C# 2005:ssä tai Visual C# .NET:ssä. Form1 luodaan oletusarvoisesti.
Huomautus Jos et löydä SHDocVw.dll-tiedostoa tai AxSHDocVw.dll -tiedostoa Visual C# 2005:ssä, suorita seuraava komento Visual Studion komentokehotteeseen:
aximp %WINDIR%\system32\shdocvw.dll
Luo sitten yleinen suorituksenaikainen välityspalvelin (SHDocVw.dll) ja Windows Forms välityspalvelin (AxSHDocVw.dll) Microsoft Web Browser -ohjausobjektille. Jos haluat lisätä DLL-tiedostot Visual C# 2005:ssä, toimi seuraavasti:
- Valitse Projekti-valikostaLisää viittaus.
- Valitse Lisää viittaus -valintaikkunassa Selaa.
- Etsi ja valitse sitten AxSHDocVw.dll tiedosto ja SHDocVw.dll tiedosto.
- Jos haluat lisätä projektiviittauksia näihin kahteen tiedostoon, valitse OK.
Avaa Työkalut-valintaikkuna valitsemalla Työkalut-valikosta Mukauta työkaluriviä. Lisää COM-komponentit-välilehdessä viittaus Microsoft WebBrowseriin. Lisää WebBrowser-ohjausobjekti Windows Forms työkaluruutuun valitsemalla OK. WebBrowser-ohjausobjekti tulee näkyviin, kun työkalurivillä on tekstinhallinta.
Huomautus Visual Studio 2005:ssä ei tarvitse tehdä vaihetta 2.
Lisää työkaluryhmän avulla WebBrowser-ohjausobjekti, OpenFileDialog-ohjausobjekti ja CommandButton-ohjausobjekti Form1:een. Tämä lisää AxWebBrowser1-, OpenFileDialog1- ja Button1-jäsenmuuttujat Form1-luokkaan. Visual C# 2005:ssä lisätään webBrowser1-, openFileDialog1- ja button1-jäsenmuuttujat.
Kaksoisnapsauta Form1:ssä Button1-painiketta. Tämä lisää Button1_Click-tapahtuman Form1:een.
Lisää Form1:n koodiikkunassa seuraava nimitila luetteloon:
using System.Reflection;
Määritä yksityinen jäsen luokassa Form1 seuraavasti:
private Object oDocument;
Lisää form1-luokan InitializeComponent-menetelmän loppuun seuraava koodi, joka käsittelee Form1_Load, Form1_Closed ja axWebBrowser1_NavigateComplete2 tapahtumia:
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);
Korvaa seuraava koodi
private void button1_Click(object sender, System.EventArgs e) { }
jossa on:
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() ); }
Huomautus Koodia on muutettava Visual Studio 2005:ssä. Visual C# lisää oletusarvoisesti yhden lomakkeen projektiin luodessasi Windows Forms projektia. Lomakkeen nimi on Form1. Kaksi lomaketta edustavaa tiedostoa ovat nimeltään Form1.cs ja Form1.designer.cs. Kirjoitat koodin form1.cs-tiedostoon. Form1.designer.cs-tiedostossa Windows Forms Designer kirjoittaa koodin, joka toteuttaa kaikki toiminnot, jotka suoritit vetämällä ja pudottamalla ohjausobjekteja Työkaluryhmästä.
Lisätietoja Windows Forms Designerista Visual C# 2005:ssä on seuraavassa Microsoft Developer Network (MSDN) -sivustossa:https://msdn.microsoft.com/en-us/library/ms173077.aspx
Suorita projekti painamalla F5-näppäintä. Kun valitset Selaa, näyttöön avautuu Avaa-valintaikkuna, jossa voit selata Word-asiakirjaa, Excel-laskentataulukkoa tai PowerPoint-esitystä. Valitse mikä tahansa tiedosto ja valitse sitten Avaa. Asiakirja avautuu WebBrowser-ohjausobjektiin, ja näyttöön tulee sanomaruutu, jossa näkyy Office-asiakirjapalvelimen nimi.
Mitä kannattaa ottaa huomioon, kun käytät WebBrowser-ohjausobjektia
Ota huomioon seuraavat asiat, kun käytät WebBrowser-ohjausobjektia:
WebBrowser-ohjausobjekti selaa tiedostoihin asynkronisesti. Kun kutsut WebBrowser1.Navigate-funktiota, kutsu palauttaa hallinnan Visual C#-sovellukseen, ennen kuin asiakirja on ladattu kokonaan. Jos aiot automatisoida sisällytetyssä asiakirjassa, sinun on käytettävä NavigateComplete2-tapahtumaa, jotta saat ilmoituksen, kun asiakirjan lataaminen on päättynyt. Käytä välitetyn WebBrowser-objektin Document-ominaisuutta saadaksesi viittauksen Office-asiakirjaobjektiin, jonka edellisessä koodissa on määritetty arvoksi oDocument.
WebBrowser-ohjausobjekti ei tue valikoiden yhdistämistä.
Internet Explorer 5.0:ssa ja sitä uudemmissa versioissa voit näyttää kiinnitetyt työkalurivit seuraavalla koodilla:
// 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);
Projektissa on useita tunnettuja ongelmia, jotka liittyvät useampaan kuin yhteen WebBrowser-ohjausobjektiin ja siihen, että jokaiseen ohjausobjektiin ladataan samantyyppinen Office-asiakirja (eli kaikki Word-asiakirjat tai kaikki Excel-laskentataulukot). Microsoft suosittelee, että käytät vain yhtä ohjausobjektia kussakin projektissa ja selaat yhteen asiakirjaan kerrallaan.
Yleisin ongelma on Microsoft Officen komentopalkit, jotka näkyvät poissa käytöstä. Jos sinulla on samassa lomakkeessa kaksi WebBrowser-ohjausobjektia, jotka molemmat on ladattu Word-tiedostoilla, ja jos olet osoittanut työkalurivit jollakin edellä olevista tekniikoista, vain yksi työkalurivijoukko on aktiivinen ja toimii oikein. Toinen on poistettu käytöstä, eikä sitä voi käyttää.
Jos haluat tyhjentää WebBrowser-ohjausobjektin sen nykyisestä sisällöstä, siirry napsautustapahtumassa toiseen komentopainikkeeseen (tai muuhun sopivaan kohtaan koodissasi) oletus tyhjälle sivulle käyttämällä seuraavaa koodia:
AxWebBrowser1.Navigate("about:blank");
Mitä kannattaa ottaa huomioon, kun käytät WebBrowser-ohjausobjektia yhdessä 2007 Microsoft Office -ohjelman kanssa
2007 Office -ohjelmat eivät oletusarvoisesti avaa Office-tiedostoja selaimessa. Tämä toiminta vaikuttaa myös WebBrowser-ohjausobjektiin. Suosittelemme, että käytät mukautettua ActiveX-tiedostosäilöä WebBrowser-ohjausobjektin sijaan, kun kehität sovelluksia, jotka avaavat 2007 Office-tiedostoja.
Aiemmin luoduissa sovelluksissa, jotka edellyttävät yhteensopivuutta WebBrowser-ohjausobjektin kanssa, voit määrittää Internet Explorerin muokkaamalla rekisteriä. Tämän menetelmän avulla voit määrittää Internet Explorerin avaamaan 2007 Office-tiedostoja selaimessa. Saat lisätietoja napsauttamalla seuraavaa artikkelin numeroa, jotta voit tarkastella artikkelia Microsoft Knowledge Base -joukossa:
927009 Uusi ikkuna avautuu, kun yrität tarkastella 2007 Microsoft Office -ohjelman asiakirjaa Windows Internet Explorer 7:ssä
Huomautus
Jos muokkaat rekisteriä Microsoft Knowledge Base -artikkelissa 927009 mainitulla menetelmällä, muutokset vaikuttavat WebBrowser-ohjausobjektiin, jota käytät sovelluksessa. Muutokset vaikuttavat myös kaikkiin Internet Explorerin esiintymiin. Lisäksi tämä menetelmä ei välttämättä toimi Microsoft Office -ohjelmistoohjelmistojen tulevissa versioissa. Siksi suosittelemme, että käytät tätä menetelmää vain yhteensopivuuteen olemassa olevan sovelluksen kanssa.
Lisätietoja
Saat lisätietoja WebBrowser-ohjausobjektin käyttämisestä napsauttamalla seuraavia artikkelin numeroita, jotta voit tarkastella artikkeleita Microsoft Knowledge Base -joukossa: