Office with .Net 系列之 ――― 在自己的程序中宿主Office
来源:互联网 发布:和程序员男朋友谈恋爱 编辑:程序博客网 时间:2024/06/02 11:51
Office with .Net 系列之 ――― 在自己的程序中宿主Office
“在自己的程序中宿主Office”的意思就是在我们自己开发的应用程序的窗体上,显示一个就像Office应用程序那样的界面,用来显示和操作Office文档。其实,通过使用Microsoft Web Browser这个ActiveX控件,我们能够非常方便的做到。
首先,在Visual Studio中创建一个C#语言的Windows应用程序,然后在左侧的工具箱中点击鼠标右键,选择“添加/移除选项”,就能够打开自定义工具箱窗口,在窗口中的COM组件列表中,我们就能找到“Microsoft Web Browser”(如果是中文版操作系统,这个控件也许叫“Microsoft Web 浏览器”)这个ActiveX控件,选择它,把它添加到我们的工具箱中。
将这个ActiveX控件直接拖到WinForms窗体上,如下图。另外,我们还添加了两个按钮,用来载入和卸载Word文档。
在第一个载入文档的按钮的事件代码中,我们直接打开一个Word文档:
Object missing = Type.Missing;
Object sFilePath = "d://hello.doc";
this.axWebBrowser1.NavigateComplete2 += new AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(axWebBrowser1_NavigateComplete2);
this.axWebBrowser1.Navigate2(ref sFilePath, ref missing, ref missing, ref missing, ref missing);
在上面的代码中,我们还给这个控件的NavigateComplete2事件添加了一个事件处理方法。NavigateComplete2事件是在控件载入Word文档完成后触发。
在第二个卸载Word文档的按钮的事件代码中,我们直接让控件访问一个空页面即可:
Object missing = Type.Missing;
Object sBlankPage = "about:blank";
this.axWebBrowser1.Navigate2(ref sBlankPage, ref missing, ref missing, ref missing, ref missing);
当我们载入一个Office文档时,在后台已经启动了一个相应的Office应用程序,如果要对显示出来的Office应用程序进行进一步的控制,我们就可以在下面所示的NavigateComplete2事件代码中获取相应的Microsoft.Office.Interop.Word.Application(对应启动的Word应用程序)对象实例和Microsoft.Office.Interop.Word.Document(对应打开的Word文档)对象实例。下面示范代码中的变量e是事件处理方法的参数:
Microsoft.Office.Interop.Word.Application wordApp = e.pDisp.GetType().InvokeMember("Application", System.Reflection.BindingFlags.GetProperty, null, e.pDisp, null) as Microsoft.Office.Interop.Word.Application;
Microsoft.Office.Interop.Word.Document doc = e.pDisp.GetType().InvokeMember("Document", System.Reflection.BindingFlags.GetProperty, null, e.pDisp, null) as Microsoft.Office.Interop.Word. Document;
当我们运行程序时,效果如下:
如果大家使用Visual Studio 2005开发,那么将更加方便,因为WinForms 2.0中已经自带了一个叫做“WebBrowser”的WinForms控件,它其实就是对“Microsoft Web Browser”ActiveX控件的封装。这样我们就能在窗体上直接使用“WebBrowser”控件,而不需要额外引用其他ActiveX控件了。
- Office with .Net 系列之 ――― 在自己的程序中宿主Office
- Office with .Net(二)之外传―――“彻底干净的”关闭Office程序
- Office with .Net(二)之外传―――“彻底干净的”关闭Office程序
- (转)Office with .Net(二)之外传―――“彻底干净的”关闭Office程序
- 在自己的程序中实现OFFICE中的助手动画。
- 如何在.net 程序中访问 office文档的属性
- Office with .Net (二) ――― 使用.Net访问Office编程接口
- RMS 在 office 2003 中不能正常工作 Critical RMS issue with Office 2003 打附件中提供的补丁。http://download.csdn.net/source/1899262
- VBA概述之在Office产品中创建自己的应用程序
- 关于Office系列软件的程序流程
- 怎样在.NET中调用Office组件
- .net 的Office项目
- 在 2007 Office 程序中添加 Microsoft Office Document Imaging 程序
- 在Office系列软件中创建COM插件工具条,并实现工具条上的弹出菜单
- 在 Office 系列软件中创建 COM 插件工具条,并实现工具条上的弹出菜单
- 在 Office 系列软件中创建 COM 插件工具条,并实现工具条上的弹出菜单
- 在 Microsoft Office 中使用 ADO.NET 数据集
- Office编程在dot Net环境中总结(Excel篇)
- Talk with a clever-lovely girl for about 2 hours
- 溢出基础
- 远程堆栈溢出 原理篇
- 远程堆栈溢出 实战篇
- 不用设置数据源连接Access的方法
- Office with .Net 系列之 ――― 在自己的程序中宿主Office
- 教你成为一个受欢迎的人
- 发呆中...
- 一个可逆的DES和TripleDES方式加密类(downmoon原创)
- 明天的任务
- 基于消息与.Net Remoting的分布式处理架构
- 工作、计划。
- 02/11/22(夜)
- 设计,看上去很美 wayfarer