如何使用 WebBrowser 控件在 Visual C# 2005 Visual C# .NET 中打开 Office 文档
查看本文应用于的产品
本文的发布号曾为 CHS304662
有关本文的 Microsoft Visual Basic .NET 版本,请参阅 304643  (support.microsoft/kb/304643/ )
本页
概要
更多信息
o 创建可打开 Office 文档的 Visual C# 应用程序
o 使用 WebBrowser 控件的注意事项
o 将 WebBrowser 控件与 2007 Microsoft Office 程序一起使用时的注意事项
参考
展开全部 | 关闭全部
概要
您可能希望直接在 Microsoft Visual C# 窗体中显示或嵌入 Microsoft Office 文档。Microsoft Visual C# 20...
您可能希望直接在 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 文档不是作为更大文档中所包含...
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 文件,请按下列步骤操作:
1. 项目菜单上,单击添加引用
2. 添加引用对话框中,单击浏览
3. 到并选择 AxSHDocVw.dll SHDocVw.dll 文件。
4. 若要为这两个文件添加项目引用,请单击确定
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 的代码窗口中,向列表添加以下命名空间:
6. using System.Reflection;
                   
7. 如下所示在 Form1 类中定义一个私有成员:
private Object oDocument;
8. Form1 类的“InitializeComponent”方法的末尾,添加以下代码以处理“Form1_Load”“Form1_Closed”“axWebBrowser1_NavigateComplete2”事件:
9. this.axWebBrowser1.NavigateComplete2 += new AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.axWebBrowser1_NavigateComplete2);
10. this.Load += new System.EventHandler(this.Form1_Load);
11. this.Closed += new System.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;
web浏览器在哪里打开  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() );
}
                   
注意:您必须在 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) 网站:
msdn2.microsoft/zh-cn/library/ms173077.aspx (msdn2.microsoft/zh-cn/library/ms173077.aspx)
16. F5 运行该项目。单击浏览后,会出现打开对话框,您可以使用该对话框浏览到 Word 文档、Excel 工作表或 PowerPoint 演示文稿。选择任一文件,然后单击打开。文档在 WebBrowser 控件内打开,并出现一个显示 Office 文档服务器名称的消息框。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。