`

使用.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:

分享到:
评论

相关推荐

    O2003PIA.MSI

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

    .NET 使用Excel PIA组件生成Excel

    .NET 使用Microsoft.Office.Interop.Excel组件生成Excel,实现对Excel的导入和导出功能。

    vs安装部署office2010 pia组件

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

    Office 2007 PIA Demo

    Office 2007 PIA 操作Word\Excel的例子

    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 开发程序集

    OfficePIA开发库14(支持Office2010)

    OfficeRIA开发库14(支持Office2010)

    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

    o2007pia.msi

    o2007pia.msi 开发使用就靠它了

    Microsoft.Office.Interop 12 PIA DLL包

    Microsoft.Office.Interop 12 DLL包 兼容Office2007之后的所有版本 在visualstudio 里面引用这个,就不怕开发的office应用不兼容了

    C#利用Office PIA,Interop.Microsoft.Office.Interop.Excel操作EXCEL

    C#利用Office PIA,Interop.Microsoft.Office.Interop.Excel操作EXCEL,同时支持(Office2000,2003,2007,2010),包括设置单元格值、边框、颜色,字体大小,对齐,行,列宽度,高度,合并单元格,调用 Excel 打印预览,...

    vb.net学生信息管理

    2.Excel 2003报表补丁(vstor.exe,O2003PIA.MSI)用于工程打印Excel报表的功能,不需要的话可以把frmXlsPrint.vb代码给注释,否则编译不通过.使用报表功能出错. 3.数据库的链接代码在User_DB.vb里.. 4.登录账号和登录...

    MSOffice各类文件转PDF

    使用MSOffice .NET API (PIA, OLE COM)将文档(Word \ Excel \ PowerPoint \ Visio \ text \ XML \ RTF \ CSV等)转换为PDF

    NPOI资源dll

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

    如何用C# 调用 office宏

    如何用C# 调用 office宏 要下载PIA

    offiec2007开发必备o2007pia

    安装后解决出现错误:未能加载文件或程序集“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项

    C# 操作excel 用的NPOI 组件包

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

    O2003PIA.rar

    下载excel,已经安装了office但依然出错,安装这个插件,就可以实现下载了,原因是因为安装的office可能不是完全的,缺少文件。

    PIA-NextGen-PortForwarding:新的PIA pfSense(私有Internet访问)端口转发API脚本,用于下一代服务器和传输支持

    PIA-NextGen-PortForwarding:新的PIA pfSense(私有Internet访问)端口转发API脚本,用于下一代服务器和传输支持

Global site tag (gtag.js) - Google Analytics