第21章开发Office业务应用程序CodePl.docx_第1页
第21章开发Office业务应用程序CodePl.docx_第2页
第21章开发Office业务应用程序CodePl.docx_第3页
第21章开发Office业务应用程序CodePl.docx_第4页
第21章开发Office业务应用程序CodePl.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第21章 开发Office业务应用程序本章内容q Office扩展功能概述q 创建Office外接程序q 创建Office文档扩展微软Office是有名且畅销的信息工作者生产力应用程序套件。我们非常熟悉的有Microsoft Word、Microsoft Excel、Microsoft Outlook和MicrosoftInfoPath提供的work处理、电子数据表、email和表单功能。但是这些应用程序不仅具有普通功能:它们是通向自身的开发平台,一种可扩展并自定义创建业务线应用程序的平台,该应用程序利用并基于每个应用程序提供的最优功能创建。例如,采购订单应用程序可以利用终端用户所熟悉的Microsoft Word,来对数据录入使用Word表单,同时使用Excel来生成关于采购订单历史的报告和图表。过去,扩展Microsoft Office应用程序的主要工具是Visual Basic forApplication(VBA)。使用VBA,开发人员,甚至用户都可以创建广泛的解决方案,从简单的宏到实现业务逻辑和访问数据库中数据存储的复杂功能。VBA提供简单的on ramp来访问对象模型,这些模型由Microsoft Office的扩展套件应用程序公开:Project、Word、Outlook、InfoPath、PowerPoint、Publisher等等。但自从第一个Visual Studio Tools for Office (VSTO)发布开始,开发人员现在就有了可靠的方式来从Visual Studio中的托管代码中创建Office解决方案Visual Basic 和Visual C#。Visual Studio 2008和第三代VSTO一起发布,它允许你瞄准最近发布的Office,Microsoft Office 2007。使用VSTO来开发Office主题非常的大,需要整本书的篇幅来介绍它。本章只简单介绍包含使用VSTO的概念,并显示Visual Studio Office项目类型如何用于快速创建强大的应用程序,它利用已有的Word、Excel和Outlook功能。我们也将涵盖这些主题创建自定义操作窗格创建自定义任务窗格自定义Office 功能区我们尤其不会尝试涵盖任何Office应用程序的对象自动化模型,超出理解前面概念的最小必要。至于作为开发平台Office更完整的处理,我们推荐VSTO的小组博客,/vsto/,由Kathleen McGrath and Paul Stubbs (Addison-Wesley Professional, 2007)编写的书VSTO for Mere MortalsTM: A VBA Developers Guide to Microsoft Office Development Using Visual Studio 2005 Tools for Office,当然涉及VSTO的不同MSDN部分(查看Visual Studio工具的Office主题)。让我们开始使用快速运行的可自定义的不同Office功能。注解 尽管你会使用Visual Studio 2008来瞄向Office 2003和Office 2007,本章中我们仅讨论Office 2007。21.1 Office扩展功能概述由于每个Office应用程序有单一和非常固定的功能,毫无疑问,自定义Office应用程序的方式将依靠我们具体谈论的Office应用程序。尽管它们共享一个通用的综合布局的用户界面,在VSTO中,要求不同功能显得错综复杂。例如,Excel和Word同时处理文件作为它们的核心工作,尽管Outlook处理email(可在本地存储或者存储到服务器上)。所以我们可以应用文档层的扩展到Excel和Word,但是在Outlook中却不能这样。相反地,Outlook对象模型支持表达区域概念,一种在Excel和Word中不存在的概念。21.1.1 Office功能表21-1提供Office应用程序中自定义/扩展的不同可用功能列表。我们会在后续小节中讨论它们。表21-1 微软Office扩展点应用程序功能Microsoft Excel 2007操作窗格任务窗格数据缓存功能区智能标签Microsoft InfoPath 2007任务窗格Microsoft Outlook 2007任务窗格Outlook表单区域Microsoft PowerPoint 2007任务窗格Microsoft Word 2007操作窗格任务窗格数据缓存功能区一些功能是文档层功能,其他的是应用程序层功能。两者之间在很大层度上存在不同。文档层自定义是附属于,也伴随着,特定文档的,不管是Word .doc/.docx文件还是Excel数据表文件。相比之下,应用层功能则更触及全局性,同时作为指定Office应用程序的外接程序实现,这和为Visual Studio自身创建和实现外接程序的方式是一样的(查看第13章“编写外接程序和向导”)。在综述完VSTO项目类型之后,我们将研究文档层和应用程序层的解决方案的机制如何不同。首先,让我们研究在表21-1中提到的功能。理解这些功能是决定你如何在解决方案中使用VSTO来利用Office的关键。1. 任务窗格和操作窗格Office中的任务窗格用来公开命令和功能,以即将到来的任务为核心,无须从当前加载的文档中断用户的关注。图21-1是Microsoft Word 2007带有字符的任务窗格的屏幕截图。该任务窗格能够引导用户通过系列步骤,同时也可显示加载的字母文本。任务窗格存在于应用程序层。操作窗格,另一方面,是在文档层实现的一种任务窗格。(原书P856图1)图21-1 Microsoft Word 2007任务窗格2. 数据缓存数据缓存涉及VSTO本地存储数据到文档的能力。该缓存有时也作为数据岛涉及。由于VSTO可以读取和写入数据缓存,它是一种有用工具,由Office外接程序存储必要信息或者投影驻存于数据库中但为某种断开解决方案所需要的数据。Ribbon3. Ribbon功能区功能区(Ribbon)是新型用户界面元素,初次出现在Microsoft Office 2007中。它表示向用户呈现功能的新型方式,无须使用传统工具栏和菜单。功能区中的命令由任务种类区分,在每种任务种类命令都是和其他类似命令分在一起。例如,使用Word,我们有“审阅”选项卡,它合并了和文本审阅相关的命令。由于功能区使得大多使用的命令立即可视和可用,功能区尝试避开现有菜单栏范例引起的问题,其中的项可能被组合或嵌套到菜单系统很深的层次中。功能区选项卡和聚集到选项卡中的命令是自由改变的,从应用程序到以来上下文的应用程序。图21-2比较Word和PowerPoint功能区的开始选项卡。(原书P857图1)Microsoft Word 2007(原书P857图2)Microsoft PowerPoint 2007图21-2 微软Word 2007和PowerPoint 2007功能区4. 智能标记在Office功能中的智能标记类似于Visual Studio IDE的智能标记(查看第8章,)Word能够识别不同的输入文本的内容片段,例如名称、日期、财务符号和电话号码。在这些项中的任何一项被识别时,它就会被带点的紫色下划线标记。悬停在下划线之上,就会显示智能标记图标,然后,就可以用来访问具有不同选项的级联菜单,作为和该数据的交互方式。例如,要添加某人的电话号码到联系人列表。该操作从电话号码的智能标记菜单就可简单执行(查看图21-3)。使用VSTO,你可以创建自己的智能标记识别器同时关联命令。(原书P857图3)图21-3 在微软Word 2007中的智能标记菜单21.1.2 Visual Studio Office项目类型总体来说,有一种项目类型或者项目类型系列对每种Office应用程序可用。在图21-4中,我们看到可用的不同项目类型,通过在新建项目对话框中展开第一种选择的语言节点,接着是Office节点。(原书P858图1)图21-4 Visual Studio中的Office项目类型注意,我们可选择目标是Microsoft Office 2003 或Microsoft Office 2007应用程序。对于大部分来说,两个应用程序之间的方法和功能任然一样,除了某些在Office 2007中可用的新特性外(至少有新功能区的用户界面)。对于Word和Excel,会看到两种项目类型外接程序模板和文档级别模板(对于Word,涉及Word 2007文档项目模板,同时对于Excel,这和Excel 2007工作簿项目模板相关)。正如前面讨论的那样,应用程序级别外接程序和文档扩展之间的不同在于某种范围:当你编译VSTO项目的时候,就和在Visual Studio中的其他项目那样,生成托管代码程序集。该程序集可附加或连接到Office应用程序(例如,Word或者Excel),或者Office文档(例如,.doc/.docx 文件或者.xls/.xlsx文件)。文档级别的程序集仅当文档加载的时候加载,同时限于文档范围。应用程序外接程序在应用程序开始的时候加载(尽管这可由用户操控)同时在它们可触及的全局范围。注解 尽管Visual Studio 2008完全支持Microsoft Office项目可即时使用(至少是Visual Studio Professional版本),当然需要安装Microsoft Office备份和可能用到的各种其他组件到电脑上。查看MSDN文章“How to: Install Visual Studio Tools for Office”来获取深入的VSTO需求。21.2 创建Office外接程序要开始创建自己的Office外接程序,在Visual Studio中创建新项目,通过选择任意一种Office外接程序项目类型。图221-5显示使用Word外接程序项目创建的基本项目框架。已经有一个代码文件,建立了外接程序的启动进入点,同时给我们提供了访问Word自动对象模型的必要命名空间。迄今为止没有任何强迫的开发人员体验。但是VSTO提供了强大的系列可视设计器,你可以用来创建Office解决方案就像你在Visual Studio中其他项目中做的那样。要访问这些设计器,我们需要添加关于设计器的项目项。首先,让我们看看如何创建自定义功能区。(原书P859图1)图21-5 Microsoft Word 2007 外接应用程序项目21.2.2 自定义功能区在VSTO项目中的功能区支持,可以通过给项目添加功能区项目项实现。在解决方案资源浏览器中右键单击项目,同时选择添加新项。在添加新项对话框中(图21-6所示),你会看到两种不同的功能区模板可供选择:功能区(可视化设计器)和功能区(XML)。正如它们的名字提示的那样,可视化设计器模板提供所见即所得设计界面来创建功能区定制。由于该设计界面不能用于创建某种更高级功能区功能的类型,功能区(XML)项模板在XML中提供手动创建功能区功能。如果像做以下任何一项,需要使用功能区(XML)项:添加内置的组(与自定义相对)到自定义选项卡。添加内置控件到自定义组为任何内置控件自定义事件处理程序从快速访问工具栏添加或移除项(原书P860图1)图21-6 Office项目项模板为了我们的意图,让我们选择功能区(可视化设计器)项同时把它添加到我们的项目。这会添加Ribbon1.cs文件到我们的项目。在一种类似于Windows Form的风格中,该文件有设计器和附加的代码隐藏文件。我们目前的设计界面是一种空白功能区的复制品(如图21-7所示)。功能区由若干元件组成选项卡用于提供高级别任务分组功能,分组在每个选项卡中使用以提供更加细分的功能,同时驻在小组只能够的控件用来给外接程序创建自定义用户接口。(原书P861图1)图21-7 功能区设计界面使用加载的功能区设计器,现在就可以访问工具箱中功能区相关的控件(如图21-8所示)。添加控件到功能区或者添加新分支就像拖动需要的控件到功能区或者分组选项卡那么简单。(原书P861图2)图21-8 IDE工具箱中的Office功能区控件1. 给功能区添加项要说明,我们在外接程序选项卡中创建自定义组。由于我们目前有一组是默认的,所以我们为外接程序重新命名更合适的名称。在功能区的所有项可通过属性窗口修改,就如所有其他Visual Studio项目 类型那样。简单在分组点击,然后设置它的标签属性。分组就像在设计界面的容器那样,允许我们拖放按钮到分组中。图21-9显示采购系统集成外接程序自定义功能区的开始。添加两个按钮,修改它们的ControlSize属性为RibbonControlSizeLarge,设置它们的标签属性为我们想要在按钮中显示的文本,同时也给按钮添加图像。提示 本例中使用的图像来自Visual Studio 2008图像库,但是有实用的方式来重用任何在Office中看到的图标。首先,从Microsoft下载中心(搜索“2007 Office System Add-In: Icons Gallery”)中下载图标库外接程序。在打开的时候,该下载会保存一份Excel文件到驱动器中,并显示Office图标库(查看Excel功能区中的开发者选项卡)。通过在感兴趣的图标上悬停,就会看到它的imageMso值。这是一个字符串,用于直接插入到功能区按钮的OfficeImageId属性。只要按钮的图像还没设置好,它就会使用指定的Office图标。这是UI设计的实际好处,在Office中提供成百上千的高质量可用图标。图像在设计时不会显示,却在运行的时候才正确显示。(原书P862图1)图21-9 创建自定义Office功能区如果要添加更多分组到功能区的话,这包括更多来自工具箱的相同拖放操作。你可以通过选择来修改功能区中分支的次序,然后拖动任何其他已有的分组到左边或右边。注解 注意到在功能区已经有一实现的默认选项卡,叫做TabAddIns(内置)。在你为外接程序创建功能区的时候,它的分组将会在目标Office应用程序的外接程序选项卡中自动显示。如果需要添加项到内置选项卡,或者创建自己的与内置的外接程序选项卡不匹配的选项卡,就要使用选项卡(XML)项来实现该定制级别。2. 处理功能区控件事件处理按钮事件是很简单的再者,VSTO背后的想法是在Visual Studio中使用已经存在的开发范例提供Office定制功能。这表示我们可以简单双击按钮来让IDE自动创建和封装一个事件处理程序事务,准备好接受任何需要实现按钮行为的代码。要测试它,让我们添加下列代码到Replace PO按钮:(原书P863代码1)如果通过按F5键来运行项目,Word就会自动运行。我们可以看到通过点击外接程序选项卡定制的功能区。点击Replace PO按钮,返回结果如图21-10所示。21.2.3 自定义任务窗格任务窗格没有专用的可视化设计器,因此它们通过创建用户控件实现,这已经准备好了设计界面。要添加自定义任务窗格到Word外接程序,右键点击项目,选择添加新项,然后选择用户控件项。注解 由于操作窗格是文档级别概念,所以我们在本章的稍后小节“创建Office文档扩展”中单独讨论它们。相同的通用开发过程也会附上。(原书P864图1)图21-10 测试功能区按钮在添加用户控件以及加载设计器之后,我们可以开始为任务窗格创建UI和代码隐藏。仅VSTO特定操作项连接任务窗格的用户控件到Word的对象模型。所有工作由外接程序类中的代码完成。首先,要简化工作,添加using语句到外接程序类。(原书P864代码1)然后,声明局部对象,一个给任务窗格,一个给用户控件。(原书P864代码2)最后,需要代码来添加自定义任务窗格到应用程序实例。我们把它放到Startup事件(例如ThisAddIn_Startup)所以任务窗格立即可用并且在运行外接程序时显示。(原书P864代码3)如果现在构造和运行项目,应该看到Word环境中的任务窗格(如图21-11所示)。(原书P865图1)图21-11 Microsoft Word 2007中自定义任务窗格21.2.4 创建Outlook表单区域Outlook外接程序能够给Outlook中的任何信息类添加表达区域。最好把信息类想像成Outlook定义的不同实体。它们包括注解、任务、email等等。表达区域由首次创建Outlook外接程序项目实现,然后添加Outlook表单区域项实现。这会触发表达区域向导,它捕获自动生成区域类文件的必要信息。向导中的第一页是用来告示你是否需要创建一个全新的表达区域还是使用在Outlook自身设计好的已有项。向导中的第二页,如图21-12所示,指定该区域所在地方。这里有四个选项,使用图像说明该区域的定位行为。向导第三页,如图21-13所示,查询该区域的名称,该区域支持检查器显示模式。检查器是Outlook术语,用来描述用来查看和编辑特定信息类的窗体。例如,在Outlook中编辑新邮件信息的时候,实际上看到的是邮件检查器。向导的第四页和最后一页,如图21-14所示,关联表达区域和任意内置的Outlook信息类,或者由第三方厂家实现的自定义信息类。(原书P866图 1)图21-12 可用的Outlook表单区域类型(原书P866图 2)图21-13 检查器显示模式支持(原书P867图 1)图21-14 关联该区域和信息类完成的时候,Visual Studio会生成代码来匹配向导中提供的表达区域属性。现在准备好为你的区域构建用户界面。Outlook表达区域的可视化设计器看起来于用户控件设计器完全一样:这本质上是一块空白的画布,你可以往上面拖放控件。和使用其他外接程序类型一样,外接程序类是你连接表单区域的用户界面到Outlook项目模型的地方,它用来执行外接程序的实际工作。图21-15 显示完成的附加到邮件消息类(IPM.Notes)的Outlook表达区域21.3 创建Office文档扩展有不同方式来自定义Office文档。可以在文档中托管控件、创建特定文档的操作窗格、实现你自己的智能标记以及在文档中存储数据。文档级别的项目使用创建外接程序的相同过程创建。然而,这次选择Excel 2007 工作簿或者Word 2007文档项目类型。这些项目类型使用设计器描绘Excel工作簿或Word文档的外观。(原书P868图1)图21-15 Outlook表单区域实践21.3.1 宿主控件Word和Excel都有宿主项,它具有控件和代码容器的功能。宿主项本质上是一个代理对象,它描述了两种应用程序的物理文档。它们是文档级别定制的重点。对于Word,我们有Microsoft.Office.Tools.Word.Document对象,同时对于Excel,我们有Microsoft.Office.Tools.Excel.Worksheet对象。在Visual Studio中,我们通过运用设计器来使用这些宿主项构建功能。每个宿主项都可以同时托管Windows Form和本地Office控件。注解 实际上有第三方宿主项,它表示Excel工作簿:Microsoft.Office.Tools.Excel.Workbook是用来定制工作簿级别的宿主项,但是,不是实际上的容器。取而代之,工作簿功能是组件托盘,可以接收组件,例如,数据集。1. Windows Form控件Windows Form控件可以添加到文档设计界面,就像设计Windows Form应用程序那样。本例中,我们使用Excel工作簿。Excel 2007工作簿项目模板自动添加.xslx文件到我们的项目,它包含三个工作表,每个表都由它自己的类表示(这些就是我们前面讨论的宿主项)。这些表已经为startup和shutdown定义了事件,在工作表第一次打开或关闭时让我们来执行工作。工作表设计界面看起来和Excel中的工作簿一样。从这里,可以通过Visual Studio工具箱添加Windows Form控件到工作簿,同时在代码隐藏文件中实现代码来自定义控件的动作。图21-16显示IDE中添加了一些控件的工作簿设计器。注解 创建Office文档项目需要系统允许访问Microsoft Office Visual Basic for Application项目系统。一般情况下,该类型访问由于安全的原因而禁用。如果访问被禁用,Visual Studio会提示你在创建Office项目之前启用它。(原书P869图1)图21-16 自定义Excel工作表2. 宿主控件宿主控件是应用于本地Office控件的术语。这些控件实际上扩展了在Word或Excel对象模型中发现的对象,来提供附加功能,例如事件处理和数据绑定。使用宿主控件创建文档,遵循使用Windows Form控件的相同步骤。具有加载文档级别项目,你会在Visual Studio工具箱中看到一个选项卡,它存储了特定应用程序的宿主控件。对于Excel,就有Excel控件选项卡,对于Word,有Word控件选项卡。表21-2 详细列举Excel和Word都可用的宿主控件。表21-2 Microsoft Office扩展点项目类型宿主控件功能Excel 2007工作簿ListObject在行和列中显示数据Excel 2007工作簿NamedRange描述Excel范围;可绑定到数据同时公开事件Word 2007 文档Bookmark表示Work书签Word 2007 文档BuildingBlockGalleryContentControl文档构建模块是可重用的文档片段(封面和页眉等等),该控件显示构建模块列表,用户可以插入文档。Word 2007 文档ComboBoxContentControl标准的组合框Word 2007 文档DatePickerContentControl标准日期选取器控件Word 2007 文档DropDownListContentControl下拉项列表Word 2007 文档PictureContentControl表示用来显示图像的文本区域Word 2007 文档PlainTextContentControl表示文本模块Word 2007 文档RichTextContentControl表示文本模块。没有丰富的内容。21.3.2 创建操作窗格除了在文档中自定义与用户的交互外,Windows Form控件可用于构建自定义操作窗格。操作窗格可用于提供上下文数据以及命令选项给用户,当他们编辑/查看文档时(Word文档或Excel工作簿文件皆可)。有若干选择使用操作窗格实现文档接口的原因。其中一个原因是操作窗格连接到文档,但并非文档的实际部分在打印文档的时候,操作窗格的内容不会被打印。另一个实现操作窗格的原因是保持应用程序的以文档为中心焦点:可以通篇文档读取和翻页,使得信息和命令在操作窗格中一直保持完整视图。实际上,操作窗格和用户控件一起创建,同时有操作窗格控件项表示。添加该项到文档项目就会创建用户控件类;像平常那样简单地创建用户控件界面。总体上,虽然,你很想从依赖于用户在Word或Excel中进行的操作的操作窗格中动态添加或移除控件。提供上下文相关级别是操作窗格的目标和专长。提示 通过利用Windows Form到Windows演示基础的互操作,在操作窗格中包含WPF控件是可行的。关于在用户控件中托管WPF控件的信息,查看MSDN文档中关于Windows Form ElementHost类。控制堆叠行为由于操作窗格作为工具栏容器,它可以由用户停靠和移动,有一完整的控件布局引擎,规定控件在操作面板上如何显示。和StackStyle 枚举一起使用的值描述FromBottom从操作窗格的底部开始叠放控件FromLeft从操作窗格的左边开始叠放控件FromRight从操作窗格的右边开始叠放控件FromTop从操作窗格的顶部开始叠放控件None不执行叠放(次序和布局要手动控制)所以在ThisWorkbook类中,我们添加以下声明:(原书P872代码1)同时下列代码行将给工作簿的操作窗格添加用户控件:(原书P872代码2)图21-17显示和工作表并排的自定义操作窗格。(原书P872图1)图21-17 Excel中的自定义操作窗格21.3.3 在数据缓存中存放数据数据缓存是在Office Word文档或Excel工作簿中进行读写的地方,它可由Office应用程序利用来存放必要的数据。一个普通的方案是在操作窗格中的宿主控件或Windows Form控件,或者在文档界面绑定存储的数据集到文档数据岛。实际上,该数据到是作为嵌入到Office文件内部的XML文档实现的。该XML容器可以托管任何数据类型,要满足以下两个要求它要作为宿主项的读/写公共字段实现(例如,Word的ThisDocument类和Excel的ThisWorkbook类)。它必须是可序列化的(运行时使用XmlSerializer在数据岛中描述对象)。大多内置的.NET类型满足这些要求。如果编写了自定义类型也满足这些要求,也可保存到数据岛内部。添加数据到数据缓存相当简单。给要存储的数据类型标记CachedAttribute属性。假设该类型满足数据缓存要求,同时你已经在文档级别VSTO项目中创建了该类型的实例,就会自动添加到数据岛。DataSet对象用于数据岛内部的传送。要在缓存的时候声明DataSet,我们需要编写以下代码:(原书P873代码1)该声明指示VSTO运行时序列化对象和把它添加到当前文档的数据缓存。DataSet本身可被合适填充。也有一种方式来命令式缓存对象到文档中。每个宿主项公开IsCached方法和StartCaching方法。通过结合这两种方法,你可以查看一个对象是否已经在缓存中,同时如果不在的话,把它加到缓存。使用这两个方法,我们也许使用以下代码来存储poDataSet对象到文档中:(原书P873代码2)如果使用StartCaching()方法,就无需用Cached属性来修饰该类,但是该对象仍需遵循Office数据岛序列化的其他要求。可以对宿主项使用StopCaching方法来告诉VSTO运行时,从文档的数据缓存中移除对象。提示 然而有第三种方式来把对象放置到数据 缓存中:属性窗口。如果使用数据源窗口来添加数据集到项目,然后创建该数据集的实例,接着在设计器中选中它。在数据集实例的属性窗口中,设置Cache in Document属性为true。同时需要修改数据集实例的访问类型为Public。访问数据缓存很多时候,Office业务应用程序依赖服务器作为文档中心容器。这陷入了两难困境:Office应用程序,例如,Word和Excel并非设计在服务器环境运行的,该环境中许多实例根据服务多个文档级别扩展请求需要假脱机。迄今为止,我们已经在Office对象模型中使用对象来扩展Office。同时这意味着安装在机器上的Office运行着程序集有些并非某种典型的服务器安装案例。谢天谢地,一个文档级别Office架构的主要目标是使得来自数据视图的数据完全分离。或者,换个说法,VSTO架构定义了一种访问文档而无须使用Office客户应用程序的方式。取而代之,VSTO运行时它自己被使用。访问文档服务器端的关键是ServerDocument类。该类是VSTO运行时的一部分,同时存在于Microsoft.VisualStudio.Tools.Applications命名空间中,它允许编程访问没有安装Office的机器上的文档数据缓存。该在服务器运行的过程传递必要的文档路径到ServerDocument的构造器,然后使用CachedDataHostItem类和CachedDataItem类来获取来自文档的数据岛的架构或者XML或者两者都有。只要目标电脑安装了VSTO运行时,使用以下代码来访问服务器端采购订单数据表的采购订单数据。(原书P874代码1)使用dataCache.Xml属性,现在可以反序列化回源数据类型,查看数据等等。21.3.4 实现自己的智能标签Office智能标签工作顺序如下当用户在打开的文档中输入,文本是“已标记化”,然后和所有Office能识别的任何智能标签条款/表达式比较。如果文本被智能标签识别,就向用户提供系列操作(显示之前使用的UI,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论