不使用IA,在.NET代码中调用Office
2005-08-25 16:36
274 查看
众所周知,由于Office的接口是COM,所以在.NET代码中操作和访问Office,都需要通过Interop Assembly。从Office XP开始,微软更提供了专门的Primary Interop Assembly(PIA),来供.NET访问Office的COM接口。关于PIA,可以通过这里进行了解,Office 2003 PIA的下载在这里。
那么除了通过标准的COM Interop之外,在.NET代码中还能不能以更直接的方式来操作和访问Office的COM接口呢?能。实际上,System.Type这个类提供了一个GetTypeFromProgID()的静态方法,通过提供ProgID,就能直接通过Reflection来访问COM接口。
下面的代码示范直接启动Word,并创建一篇新文档,使用这段代码的项目完全不需要引用Office PIA:
Type wordType = System.Type.GetTypeFromProgID("Word.Application");
Object word = System.Activator.CreateInstance(wordType);
wordType.InvokeMember("Visible", BindingFlags.SetProperty, null, word, new Object[] {true});
Object documents = wordType.InvokeMember("Documents", BindingFlags.GetProperty, null, word, null);
Object document = documents.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, documents, null);
那么除了通过标准的COM Interop之外,在.NET代码中还能不能以更直接的方式来操作和访问Office的COM接口呢?能。实际上,System.Type这个类提供了一个GetTypeFromProgID()的静态方法,通过提供ProgID,就能直接通过Reflection来访问COM接口。
下面的代码示范直接启动Word,并创建一篇新文档,使用这段代码的项目完全不需要引用Office PIA:
Type wordType = System.Type.GetTypeFromProgID("Word.Application");
Object word = System.Activator.CreateInstance(wordType);
wordType.InvokeMember("Visible", BindingFlags.SetProperty, null, word, new Object[] {true});
Object documents = wordType.InvokeMember("Documents", BindingFlags.GetProperty, null, word, null);
Object document = documents.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, documents, null);
相关文章推荐
- 不使用IA,在.NET代码中调用Office
- 使用.Net访问Office编程接口(PIA和IA的区别)
- GemBox.ExcelLite破解版,可以在没有安装Office的情况,使用.net代码操作Excel文件
- 使用JNI进行Java与C/C++语言混合编程(2)--在C/C++中调用Java代码
- 使用WCF进行跨平台开发之一(WCF的实现、控制台托管与.net平台的调用)
- .Net中使用带返回值的存储过程(VB代码)
- .net客户端调用activeMQ代码
- 使用office的com作为服务,并调用ActiveDocument->ExportAsFixedFormat
- WebView原生方法---使用javascript调用android代码
- 使用node自动生成html并调用cmd命令提交代码到仓库
- cxf 方式三 是java客户端调用.net服务端 好使代码
- .net中前台javascript与c#后台代码调用
- 编写存储过程返回的结果集在游标中使用java代码调用
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
- BridgeWebView的简单使用,自动调用js的代码
- Linux内核分析:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- .Net调用Office Com组件的原理及问题检索com类工厂组件检索 COM 类工厂中 CLSID 为 {XXX} 的组件失败
- Pycharm里面使用PIL库之后,为什么调用Image的方法不能弹出代码提示,怎样能让代码提示弹出?
- .NET调用新浪微博开放平台接口的代码示例
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用