`

使用.Net访问Office编程接口(PIA和IA的区别)

阅读更多

篇文章里面,我将向大家介如何在.Net访问Office所公程接口。其,不管是使用哪具体的技针对Office开发(比如VSTO,或者用C#写一个Office Add-in,或者在一个WinForms程序中Office的功能,甚至在一个ASP.NET用的服器端启一个Excel程),只要是基于.Net平台,篇文章所描述的内容都是有价的。

篇文章以及后的文章中,所有的演示都将基于Office 2003 ProfessionalVisual Studio 2005。使用Visual Studio 2005并不代表我不能在Visual Studio 2003中使用些方法来访问Office程接口,相反,篇文章以及后文章中的几乎所有演示,都能在Visual Studio 2003中完成。笔者使用Visual Studio 2005的原因只是因它更好的IDE特性。:)

一、Office PIA

在第一篇文章中曾经说过Office程接口都是通COM件公的,任何访问Office程接口的程序,实际上都必要最终调Office COM件。如果你是一个从事Windows平台开发不太久,一始就是学和使用.Net的程序,也你又要感到郁了。所幸的是,.Net够让开发非常方便的访问COM件。我会用尽量简洁明了的描述,大家理解我.Net中是如何访问Office COM件的。

(一)Interop Assembly

.Net Framework中,提供了一叫做COM Interop的技这项就是专门用于.Net中直接访问COM件的。它的基本原理是,.Net Framework动针对某一个COM件,帮助开发生成一个Interop Assembly(互用程序集,后面IA),IA是一个完全的托管程序集。IA中的名称空、方法等等,都是针对那个COM对应的。在我.Net程序中,我可以直接引用IA,并且用里面相的方法,这时IA就会帮我再去访问真正的COM件里面的相方法。最后的效果就是,在我自己的用程序中,只需要用一个.NetIA即可。

下面的明了IA是如何帮我的程序访问COM件的。

生成一个IA的方法非常简单,当我Visual Studio开发环境中添加一个新的COM件引用Visual Studio就会自帮我生成一个相IA。如下,我示范在一个目中引用Microsoft XML 5.0件。

当在上中点OKVisual Studio就已动为生成了一个针对Microsoft XML 5.0件的IA。打开项目目obj\debug,就能看到一个名称Interop.MSXML2.dll的程序集文件,个文件就是自生成的IA,并且在目中,Visual Studio也自引用了IA程序集。如下

(二)Primary Interop Assembly

在自己的用程序中,访问Office COM件的方法的基本原理,就如同下面所述,都是通COM Interop,透IA接的访问Office中的COM件。但是针对Office件,有一点点特殊的区,那就是我应该自己在Visual Studio中生成一个“自己的”访问Office COMIA,而需要使用微提供的“官方的”PIA

PIA的意思可以理解“官方互操作程序集”,它和IA最主要的区如下:

1IA是由开发开发机器上通生成的,PIA是由件厂商(针对Office件而言,就是指微)提供的;

2PIA经过了厂商的理,使之更容易被.Net用;

(三)Office Primary Interop Assembly

所以,我应该使用PIA访问Office COM件,而不应该使用IA。那如何把Office PIA安装到我电脑上呢?

如果我的机器上已安装了.Net Framework,那在安装Office,在安装向的高自定义选项中,我件(WordExcelPowperPoint等)的子选项中,都能看到一个“.NET程性支持”,选择安装它,Office2003的安装程序就会自PIA安装到我算机上。

另外,Office PIA的客端分(就是们软件的用一装上PIA),微软专门提供了一个安装包。可以在http://www.microsoft.com/downloads/details.aspx?FamilyID=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&DisplayLang=en个分安装包。

Office PIA按照Office的各个件(WordExcelPowerPointOutlook等),分成多个独的程序集。比如Word对应PIA程序集是Microsoft.Office.Interop.Word.dll(程序集里面的都放在命名空Microsoft.Office.Interop.Word中),Excel对应的程序集是Microsoft.Office.Interop.Excel.dll(程序集里面的都放在命名空Microsoft.Office.Interop.Excel中)。另外,Office公用的一些件(比如菜单栏)放在一个独的程序集中:Office.dll对应的命名空Microsoft.Office.Interop.Core)。

如果我开发机器上已安装好了Office PIA,那当我上面所述的方法,在Visual Studio中引用Office COMVisual Studio检测到本机已安装了Office PIA,然后,它会直接引用安装好了的PIA,而不会再自生成一个新的IA

如下,我Visual Studio中添加一个Word COM件的引用(WordCOM件列表中是“Microsoft Word 11.0 Object Library”,相似的,ExcelOutlookPowerPointCOM件名称都遵循律)。

在上中点OK后,在目管理器中就可以看到,Visual Studio帮我引用了需要引用的件。实际上,除了我们选择要引用的Word件外,其他外但是必需的Microsoft.Office.CorestdoleVBIDE件也已被自引用来了。

在上Word件引用上点看它的属性,在它的路径属性中,我可以看到PIA文件其是在“C:\Windows\assembly\...”中,个目也就是我机器上的全局程序集存(GACGlobal Assembly Cache)所在的目是因Office PIA是被安装到机器上的GAC中,所以Office PIA的引用会直接指向GAC中的相文件。

二、深入浏览Office PIA

如果者曾使用VBA过开发(或者使用其他的开发工具VB/VC/Delphi直接Office),那你已经对Office COM接口有了一定的了解,因VBA编辑器中所写的操作ApplicationDocumentRange的代,其正是在操作Office COM件中的ApplicationDocumentRange

知道,在Office PIA中,已Office COM行了封装,所以我可以预见一个Office COM件中的或者接口,在Office PIA的程序集中,我们应该都能找到一个对应或者接口。接下来,我就用浏览器直接打Office COM件,然后再打Office PIA这样就可以照它,更清楚的理解它

font-family:

分享到:
评论

相关推荐

    OfficePIA开发库14(支持Office2010)

    这些接口库允许开发者使用C#、VB.NET等.NET语言来调用和控制Office应用,如Word、Excel、PowerPoint等,进行自动化处理、数据集成或创建自定义功能。 标题中的"OfficePIA开发库14"指的是适用于Office 2010的版本。...

    Office 2007 PIA Demo

    Office 2007 PIA(Primary Interop Assemblies)是微软为开发者提供的一种接口,使得.NET Framework的应用程序能够与Office 2007组件,如Word和Excel,进行无缝交互。这些接口集成了COM(Component Object Model)...

    .NET 使用Excel PIA组件生成Excel

    在这种情况下,Microsoft Office Primary Interop Assemblies (PIA) 提供了一个方便的接口,让我们能够利用C#、VB.NET等.NET语言直接操作Excel应用程序。本文将详细探讨如何使用.NET中的Excel PIA组件来生成Excel。 ...

    Microsoft.Office.Interop 12 PIA DLL包

    在.NET环境中,尤其是使用Visual Studio进行开发时,PIA使得开发者可以使用C#、VB.NET等.NET语言来调用和控制Word、Excel、PowerPoint等Office应用程序的功能,而无需深入理解COM组件的复杂性。通过引用Microsoft....

    跟我一起学Visual Studio 2005(14):Office编程篇之Office高级编程

    首先,我们需要了解的是VSTO(Visual Studio Tools for Office),这是Visual Studio的一个扩展,它允许开发者使用.NET Framework和Office PIA(Primary Interop Assemblies)来编写Office解决方案。PIA是微软提供的...

    O2003PIA.MSI

    使用Office的接口是COM,从Office XP开始,微软提供了Primary Interop Assembly(PIA)来供.NET访问Office的COM接口。在使用VS2008中的VSTO开发OFFICE应用程序(如试卷生成系统)时,不安装O2003PIA.MSI会报错,提示...

    vs安装部署office2010 pia组件

    vs安装部署“必备”组件里面正常情况没有出现office2010 pia组件 解压本文件夹放在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\目录下即可。

    NPOI-2.2.0.0 的.net2.0和.net4.0版。(.net2.0版实测有效)

    12、使用起来比Office PIA的API更加方便,更人性化。 13、你不用去花大力气维护NPOI,NPOI Team会不断更新、改善NPOI,绝对省成本。 14、不仅仅对与Excel可以进行操作,对于doc、ppt文件也可以做对应的操作 NPOI之...

    Office XP PIA

    Office XP PIA <br>office 开发程序集

    ASP.NET(c#) EXCEL操作类

    - 微软Office提供了一组称为Primary Interop Assemblies (PIA) 的接口,允许.NET代码与COM对象(如Excel应用程序)交互。在C#中,这通常通过引用`Microsoft.Office.Interop.Excel`命名空间来实现。 3. **Excel对象...

    一个优秀的ASP.NET(及WinForm)开发人员需要知道

    .NET Common Language Runtime (CLR) 负责管理内存分配和回收,使用自动垃圾回收机制来释放不再使用的对象所占用的内存。 **2.14 Finalize() 与 Dispose() 的区别** Finalize() 是析构函数,由 GC 自动调用;...

    office addin开发 配置好的package

    VSTO提供了与Office对象模型交互的接口,使得开发者可以使用C#、VB.NET等语言来创建Office Add-ins。 2. **vstorlp**:这可能是VSTO的本地化版本,用于支持不同语言环境的安装和运行。 3. **vstor30**:这可能指的是...

    O2003PIA安装程序

    标题中的“O2003PIA安装程序”指的是Microsoft Office 2003 Primary ...总的来说,O2003PIA是连接.NET世界和Office 2003生态系统的关键组件,对于开发基于Office的自定义解决方案或修复与Excel交互的问题至关重要。

    GIS基于c#.net应用开发

    - ESRI为ArcObjects提供了一组Primary Interop Assemblies(PIA),使得.NET开发人员可以直接引用这些库而无需额外的互操作层。 - **1.4.3 COM与.NET的交互方式** - 包括直接引用、动态代理等方式,方便.NET应用与...

    ArcObjects GIS应用开发——基于C#.NET.pdf

    ArcObjects与.NET的结合使得GIS开发者能够充分利用.NET环境下的高级特性,如垃圾回收机制、类型安全性和面向对象编程。 ##### 1.3.1 .NET环境简介 .NET Framework不仅提供了一种执行环境,还提供了一个全面的类库...

    Visual Studio Tools for Office PIA

    Microsoft.Office.Interop.Word.dll Microsoft.Office.Interop.Access.dll Microsoft.Office.Interop.Excel.dll Microsoft.Office.Interop.Outlook.dll Microsoft.Office.Interop.PowerPoint.dll .etc

    如何用C# 调用 office宏

    在IT领域,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用和.NET框架中。在C#中调用Office宏是一项常见的任务,这允许程序员利用已有的VBA(Visual Basic for Applications)代码来增强C#应用的功能。下面...

    Understanding Classic COM Interoperability w/.NET Applicatio

    PIA将COM接口转换为.NET接口,使得.NET代码可以像使用.NET类一样使用COM对象。 2. **使用TypeLibImporter (tlbimp.exe)**:这是一个命令行工具,它可以将COM类型库转换为.NET的元数据,生成.NET可以理解的代理类。...

Global site tag (gtag.js) - Google Analytics