当前位置:文档之家› 使用WebBrowser 控件打开Office文档

使用WebBrowser 控件打开Office文档

如何使用WebBrowser 控件在Visual C# 2005 或Visual C# .NET 中打开Office 文档查看本文应用于的产品本文的发布号曾为CHS304662有关本文的Microsoft Visual Basic .NET 版本,请参阅304643。

本页∙概要∙更多信息o创建可打开Office 文档的Visual C# 应用程序o使用WebBrowser 控件的注意事项o将WebBrowser 控件与2007 Microsoft Office 程序一起使用时的注意事项∙参考展开全部| 关闭全部概要您可能希望直接在Microsoft Visual C# 窗体中显示或嵌入Microsoft Office 文档。

Microsoft Visual C# 2005 和Microsoft Visual C# .NET 不提供用于在窗体中嵌入Office 文档的OLE 控件。

如果希望嵌入现有文档并将其作为Visual C# 窗体内的就地ActiveX 文档对象打开,一个可能的解决方案是使用Microsoft WebBrowser 控件。

本文阐述如何使用WebBrowser 控件在Visual C# 窗体内浏览到现有Office 文档并显示它。

回到顶端更多信息ActiveX 文档是比传统OLE 对象更像ActiveX 控件的可嵌入OLE 对象。

与传统嵌入对象不同的是,ActiveX 文档不是作为更大文档中所包含的对象而设计的。

其本身可以算作是仅供查看(如用Microsoft Internet Explorer 查看)或是与其他文档(如Microsoft Office 活页夹文件)一起集中到单个资源的完整文档。

WebBrowser 控件中承载的ActiveX 文档始终是活动的;因此,与传统的OLE 嵌入对象不同,无需就地激活。

尽管Visual C# 2005 和Visual C# .NET 当前不支持直接承载ActiveX 文档,但您可以使用WebBrowser 控件来实现此目的。

WebBrowser 控件(Shdocvw.dll) 是Internet Explorer 的一部分,并且只能在安装了Internet Explorer 的系统上使用。

回到顶端创建可打开Office 文档的Visual C# 应用程序要创建可打开Office 文档的Visual C# 应用程序,请按照下列步骤操作:1.在Visual C# 2005 或Visual C# .NET 中新建一个Windows 应用程序项目。

默认情况下创建Form1。

注意:在Visual C# 2005 中,如果您找不到SHDocVw.dll 文件或AxSHDocVw.dll文件,请在Visual Studio 命令提示符下运行下面的命令:aximp %WINDIR%\system32\shdocvw.dll然后,为Microsoft WebBrowser 控件创建公共语言运行库代理(SHDocVw.dll) 和Windows 窗体代理(AxSHDocVw.dll)。

若要在Visual C# 2005 中添加DLL 文件,请按下列步骤操作:a.在“项目”菜单上,单击“添加引用”。

b.在“添加引用”对话框中,单击“浏览”。

c.找到并选择AxSHDocVw.dll 和SHDocVw.dll 文件。

d.若要为这两个文件添加项目引用,请单击“确定”。

2.在“工具”菜单上,单击“自定义工具箱”以打开“自定义工具箱”对话框。

在“COM 组件”选项卡上,添加一个对“Microsoft WebBrowser”的引用。

单击“确定”,将WebBrowser控件添加到Windows 窗体工具箱。

WebBrowser 控件会显示出来,并且在工具箱中带有“Explorer”(资源管理器)字样。

注意:在Visual Studio 2005 中,不必执行步骤2。

3.使用该工具箱向Form1 添加一个WebBrowser 控件、一个OpenFileDialog 控件和一个CommandButton 控件。

这就会向Form1 类添加“AxWebBrowser1”、“OpenFileDialog1”和“Button1”成员变量。

在Visual C# 2005 中,会添加“webBrowser1”、“openFileDialog1”和“button1”成员变量。

4.在Form1 上,双击“Button1”。

这就会向Form1 添加”Button1_Click”事件。

5.在Form1 的代码窗口中,向列表添加以下命名空间:ing System.Reflection;7.如下所示在Form1 类中定义一个私有成员:private Object oDocument;8.在Form1 类的“InitializeComponent”方法的末尾,添加以下代码以处理“Form1_Load”、“Form1_Closed”和“axWebBrowser1_NavigateComplete2”事件:9.this.axWebBrowser1.NavigateComplete2 += newAxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHand ler(this.axWebBrowser1_NavigateComplete2);10.this.Load += newSystem.EventHandler(this.Form1_Load);11.this.Closed += newSystem.EventHandler(this.Form1_Closed);12.将下面的代码13.private void button1_Click(object sender,System.EventArgs e)14.{15.}替换为: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.GetPro perty,null,o,null);Object oApplication =o.GetType().InvokeMember("Application",BindingFlags.Get Property,null,oDocument,null);Object oName =o.GetType().InvokeMember("Name",BindingFlags.GetProperty ,null,oApplication,null);MessageBox.Show("File opened by: " + oName.ToString() );}注意:您必须在Visual Studio 2005 中更改此代码。

默认情况下,当您创建Windows窗体项目时,Visual C# 向该项目添加一个窗体。

该窗体被命名为Form1。

表示该窗体的两个文件被命名为Form1.cs 和Form1.designer.cs。

您在Form1.cs 中编写代码。

Windows 窗体设计器在Form1.designer.cs 文件中编写代码,这些代码实现通过从工具箱拖放控件所执行的所有操作。

有关Visual C# 2005 中Windows 窗体设计器的更多信息,请访问下面的Microsoft Developer Network (MSDN) 网站:/zh-cn/library/ms173077.aspx16.按F5 运行该项目。

单击“浏览”后,会出现“打开”对话框,您可以使用该对话框浏览到Word 文档、Excel 工作表或PowerPoint 演示文稿。

选择任一文件,然后单击“打开”。

文档在WebBrowser 控件内打开,并出现一个显示Office 文档服务器名称的消息框。

回到顶端使用WebBrowser 控件的注意事项使用WebBrowser 控件时应考虑以下几点:∙WebBrowser 控件异步浏览到文档。

在调用“WebBrowser1.Navigate”时,该调用会在文档完全加载之前将控制权返回给Visual C# 应用程序。

如果您打算为所包含的文档实现自动操作,则必须使用“NavigateComplete2”事件在文档完成加载后发出通知。

相关主题