怎样在.NET中调用Office组件
来源:互联网 发布:淘宝开店失败经验 编辑:程序博客网 时间:2024/05/27 16:43
在几台安装了Visual Studio .Net,Excel 2003的机器上,从VS2003的项目中添加对Excel组件的引用,但是在不同的机器上,对引用的组件可能产生两种不同的名字空间:
一种是Microsoft.Office.Interop.Excel.Application,另一种是Excel.Application。
这种原因是因为为了在.Net早期绑定COM组件,首先需要根据COM的类型信息生成一个.Net Assembly实现对COM的封装,这种类型的Assembly被称为COM interop assemblies。尽管COM interop assemblies的创建不受限制;但是,对于一个COM组件,最多只能有一个Primary COM interop assembly(PIA)。PIA由组件发行者发布,包含了相关COM类型的信息,是正式的interop assemblies。同时,为了便于在Managed Code中使用,在PIA中往往会包含进行一些定制。
微软为Office XP和Office 2003都提供了PIA,Office XP的PIA需要单独下载;在Office 2003中,当选择完全安装时,Office 2003 PIA将会被部署到GAC中。
当在.Net中添加COM引用时,系统会在GAC中寻找该类型库对应的PIA,如果找到,则将引用该PIA(Office PIA名称空间以Microsoft.Office.Interop开头);否则,.Net将会根据类型库创建一个interop assembly(此时interop assembly将会使用COM类型库信息生成名字空间,也就是您看到的Excel.Application)。
解决方案:
如果您的应用程序需要支持多个Office版本,在开发时请确保总是使用最低版本的功能。
1. 早绑定,使用interop assemblies
a) 如果需要支持Office 2000、XP和2003
由于微软没有为Office 2000提供PIA,您需要使用tlbimp或者Visual Studio .Net生成一个interop assembly,然后在各开发环境上引用该assembly
b) 如果需要支持Office XP和2003
引用Office XP PIA
c) 仅需要支持Office 2003
引用Office 2003 PIA
2. 晚绑定
作为替代的方案,您可以考虑采用晚绑定动态的调用COM组件。但是这样将会失去在开发时的类型支持,同时对性能也有影响。
参考资料:
《Working with the Office XP Primary Interop Assemblies》
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/odc_oxppias.asp
《Office Primary Interop Assemblies》
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrrefofficeprimaryinteropassemblies.asp
《Target Office Applications Through Primary Interop Assemblies》
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrtsktargetingofficeapplicationsthroughpias.asp
《使用 Visual Studio .NET 开发 Microsoft Office 解决方案》
http://support.microsoft.com/?id=311452
《使用 Visual C# .NET 绑定 Office 自动化服务器》
http://support.microsoft.com/?id=302902
- 怎样在.NET中调用Office组件
- Office 2000调用.net com组件
- .NET调用Office DCOM组件 无权限
- 在C#.NET中怎样调用db2存储过程
- HOW TO:在 Visual Studio .NET 中处理 Office 2003 Web 组件的事件
- 在 Visual Studio .NET 中处理 Office 2003 Web 组件的事件
- 在一个组件中调用其他组件的内容||android中怎样在activity中获取fragment中的控件
- 在VC.net MFC对话框中调用C#组件
- Asp.Net调用Office组件操作时的DCOM配置
- Asp.Net调用Office组件操作时的DCOM配置
- .Net调用Office Com组件的原理及问题
- .Net调用Office Com组件的原理及问题
- .Net 调用office 的COM+ 组件 需要的相关配置
- .Net调用Office Com组件的原理及问题
- ASP.NET中启用Windows集成验证,怎样在调用System.DirectoryServices下的组件时传递安全上下文,也就是说当前用户凭据,来实现权限管理
- .Net Office 组件
- 在asp.net中调用Office来制作各种(3D)统计图
- 在asp.net中调用Office来制作各种(3D)统计图
- 十款ASP的内容管理系统(CMS)系统综合评比
- C# AOP实现
- 深入学习Struts2
- Add new rows to WebCombo in client-side javascript
- static and volatile
- 怎样在.NET中调用Office组件
- flex 鼠标事件和效果
- MobileASM 编程器初试: 在手机上运行汇编
- VISTA密码破解
- Ubuntu 环境变量
- flex弹出对话框,以及数据交互(PopUpManager)
- 企业应用开发圣经
- C#/.Net/数据库笔试资料
- LCS 最长公共字串算法实现