office应用程序错误

在过去的几年中,谈论“ RIA”的创建和使用已成为一种时尚,“ RIA”是“ Rich Internet Applications”的新缩写,不要与“ rich client”或“ smart client”应用程序混淆。 (这三者之间的区别充其量只是微不足道的,但在选择和使用流行语或新的三字母缩写时,技术准确性从未有太大关系。)

这种新的客户端应用程序浪潮背后的推动力很简单:即使HTML与AAAX客户端脚本结合在一起,用户也对HTML的有限用户界面功能感到厌倦。 尽管如此,开发人员还是不想失去服务器端部署的好处,因为到每个用户的PC上安装传统的客户端可执行文件(所谓的“胖客户端”)充其量是不切实际,不切实际的。最糟糕的是,绝对不可能。 因此,诞生了一种新的混合形式的客户端应用程序,该程序主要在客户端层执行,从而利用了本地处理能力,并(有希望)避免了过多的网络遍历,但是继续以某种方式从服务器进行更新。 因此诞生了“有钱人”。 或“智能客户端”。 或“丰富的互联网应用程序”。 管他呢。

对于富客户使用什么技术是一个充满争议和讨论的话题。 有些人更喜欢Eclipse Rich Client Platform(RCP),因为它已经包含了管理客户端代码库自动更新所必需的许多工具和技术,而另一些人则更喜欢AJAX,这使得对现有基于HTML的servlet / JSP的变型更加容易。应用程序进入更丰富的客户端。 还有一些人对Adobe的Flash播放器和相应的Flex开发工具包赞不绝口,理由是Flash播放器几乎在每个用户的浏览器中都无处不在。

甚至是精明的Java开发人员都无法避免的一个有趣方面是几乎每个用户桌面上都已经存在的另一个客户端平台,该平台在其用户界面选项中提供了惊人的功能和灵活性,并提供了一种熟悉的用户交互样式,每次发布都要经过深入的研究。 我说的当然是Microsoft Office平台:Word,Excel,Outlook,PowerPoint和InfoPath。

办公室扩展

为了提供有关如何扩展Office的所有书籍,杂志,文章和论文的原始资料,已经清除了大片森林,InfoQ Web服务器上没有足够的空间(更不用说本文了),以供开发人员使用可以扩展和/或使用Office来构建应用程序。 强烈建议那些寻求有关Office本身的知识的人在本文结尾处查看一些资源; Office的可扩展性包括能够在Office应用程序内部创建自定义工具栏,通过添加新公式来扩展Excel等的功能。 但是,目前,我们将重点介绍Office 2003 1的最明显的UI元素之一:智能标记。

智能标签

智能标记是出现在Word中单词下方的紫色虚线,或出现在Excel中单元格中的紫色直角三角形,以及当鼠标悬停在其上时显示的小“ i”按钮,并删除与该单词相关的某种上下文菜单。 例如,在Word中,当我输入电话号码(例如916-555-1212)时,下拉菜单包含“添加到联系人”,使我可以将此电话号码添加到Outlook的通讯簿中。 有关我键入此段时在Word中的外观,请参见下面的图1:

从本质上讲,智能标签通过识别文档中的某些文本来工作,并且在被识别时使图标和下拉菜单可用。 这分别称为“识别器”及其关联的“动作”集; 稍后再讨论。 通过打开Word或Excel的“自动更正”对话框中的“电话号码” SmartTag功能,可以启用Office附带的该特定智能标记,默认情况下已安装(但未打开)该智能标记。 “自动更正选项”,然后选择“ SmartTag”标签):

注意如何选择“电话号码”智能标签; 清除复选框显然会禁用该特定SmartTag的行为。 用户可以通过清除“带有智能标签的标签文本”复选框来关闭所有智能标签。

当使用Excel,PowerPoint或任何其他Office应用程序中的智能标记时,确切的行为和配置略有不同-例如,正如我们稍后将看到的,Excel的配置对话框略有不同,并且如上所述,智能标记的视觉提示是单元格角上的一个小三角形,而不是我们在Word中看到的紫色虚线。

智能标签实施

可以通过两种方法来构建智能标签,一种方法提供的功能更少,但是要简单得多,另一种方法需要更多的代码和开发时间,但提供了更多的灵活性。 虽然从某些方面来看,使用Visual Studio Tools for Office(又名VSTO)包显示在.NET中编写智能标记DLL(第二个选项)将是一个更有趣/令人兴奋的示例,但是有一种更简单的方法可以将智能标记放入Office,它恰好非常适合Java:创建一个“智能标记列表” XML文件,然后将其存储在用户硬盘驱动器上的适当位置。 (有关如何以.NET语言创建智能标记的更多信息,请参见Carter和Lippert的Visual Studio Tools for Office,或下载VSTO 2005 Second Edition版本。)

在这种特定情况下,我们将使用在Tomcat内部运行的传统Spring“ JPetStore”示例应用程序(在我的本地计算机上,显然,这可能并且可能会在实际情况下的某个位置的公共服务器上),我们将教Excel如何识别JPetStore产品和商品ID号。 识别后,智能标记将显示一个上下文菜单,使用户有机会打开浏览器,并在浏览器页面中显示适当的产品或项目,本质上使他们有机会验证自己在说的是正确的宠物2 。 在现实世界中,此标签可能位于格式良好的Excel文档模板中,供用户在网上订购宠物时使用,或供销售人员在与客户互动时使用。

为了使创建智能标签变得更容易,MicrosoftSwift创建了一个智能标签,该单个智能标签将在遵循特定模式的已知位置识别XML文件(在Smart Tag SDK文档中进行了介绍)。 这正式称为Microsoft Office智能标记列表(MOSTL),并且使用的XML文档称为“智能标记列表”。 创建一个非常简单。 假设是正常的Office安装,则在C:\ Program Files \ Common Files \ Microsoft Shared \ Smart Tag目录中,有一个名为“ LISTS”的子目录,我们将在其中创建一个类似于以下3的标准XML文档:

暂时忽略此处描述的可识别电话号码的正则表达式的复杂性,智能标记列表文件非常简单:

  • 注意两个命名空间的使用。 这些用于Office 2003,而那些希望可用于Office XP的标签使用不同的名称空间URI(在文档中进行了描述)。 该文档还建议使用“ FL”前缀,并且所有示例都使用它。 即使不是必需的,也强烈建议继续使用它,除非出于一致性的原因。
  • <FL:name>是不言自明的,是必需的。 <FL:lcid>描述了为此智能标记启用的语言环境,并且是可选的(意味着它可用于所有语言环境)。 <FL:description>是必需的。 <FL:updateable>和<FL:autoupdate>用于允许智能标记列表进行自我更新,我们稍后将使用它们。
  • <FL:smarttag>描述每个智能标签,在我们的案例中,它们将由公认的文本和动作组成,而不是上面看到的正则表达式支持。 但是,“ type”属性必须包含唯一的名称空间,并且必须采用上面的形式,这意味着它必须是带有“ fragment”后缀(“#”字符后的部分)的URI。 忘记片段限定符会使标记无效,这很令人沮丧,因为Office不会告诉您智能标记列表文件是否错误-它只是不会显示在“智能标记”对话框中。
  • <FL:caption>是将显示在下拉菜单中的内容。

上面未显示,我们将使用<FL:terms>和<FL:actions>来描述智能标记可以识别的文本术语,其中<FL:actions>将描述下拉菜单中可用的操作。 因此,综上所述,我们在JPetStore智能标签的第一个片段中看到的内容如下:

请注意,这里我们列出了两个智能标记,一个用于识别JPetStore产品ID的子集,另一个用于识别JPetStore商品ID的子集。 然后,每个浏览器将打开一个浏览器窗口到JPetStore Web应用程序中的相应页面,并在URL中传递识别的术语代替“ {TEXT}”占位符。 将值分配给“ action”元素的“ id”属性时要小心; 这里的任何重复都将无声地失败,从根本上创建了“最后一个获胜”的解决方案。

将此文件保存到上述子目录中,但要确保没有任何Office程序(包括Internet Explorer)正在运行-智能标记列表在启动时被读取一次,并在Office的任何运行实例之间共享。 当我们启动Excel时,我们的智能标记将列在“自动更正”对话框的“智能标记”选项卡中,并且一旦选中,便会识别电子表格中输入的产品或项目ID,并为用户提供访问相应网站的机会。正在运行的Web应用程序中的页面。

上面的简单XML文件令人非常痛苦的一件事是,它不仅仅具有可用产品和项目ID的一小部分,而且当前在智能标签列表本身中将产品和项目ID硬编码。 这些都不能满足实际情况。 我们希望智能标签列表使用服务器上可用的最新产品ID和商品ID进行更新,这很容易做到:我们只需要更改智能标签列表以包含一些更新信息,包括URL击中的智能标记,然后在Web应用程序中提供适当的资源,以提供更新的动态生成的智能标记列表文件。

为此,我们只需要更改原始智能标记列表文件:

现在,每隔五分钟(由<FL:updateFrequency>元素给定),Office将向<FL:updateURL>元素给定的URL发出HTTP POST请求。 HTTP请求另一端的资源必须类似于:

(这里为了简单起见,使用JSP语法;只要将MIME类型设置为“ text / xml”,就可以很容易地成为Struts或Spring MVC视图。)然后,这告诉Office下载<FLUP的内容: smarttaglistdefinition>元素,它将包含新的智能标记列表定义。 请注意,此处的<FLUP:checkpoint>元素对应于智能标记列表定义中的<FL:lastCheckpoint>元素-如果服务器上的检查点大于用户计算机上的lastCheckpoint,则会进行更新。 在这里,我们已经将值硬编码为400(显然比我们之前在智能标签列表定义中的值大0),但是在实际应用中,该值可能是一个递增的值,每次都会更改产品ID或商品ID在运行容器中已更改。

摘要

我们只是真正地了解了智能标记的功能,以及将它们与Java应用程序或服务集成在一起的各种方式。 例如,如果我们编写一个自定义智能标记,则该标记可以轻松地直接查询服务器(通过对Spring容器的RPC调用,或者通过检查服务器本地保存的数据并通过外部驱动的进程进行更新)有关该项目的信息:库存,定价等。

Office还具有许多其他扩展功能,例如Word中的“研究窗格”:Word中文档右侧的窗格可用于允许用户键入文本“以查找各种研究和参考服务” ”,这实际上是实现特定WSDL定义的接口的服务。 显然,这些服务不需要用.NET编写,而可以很容易地是在任何J2EE容器中运行的JAX-WS服务。

一些开发人员会拒绝使用Office的概念,仅仅是因为Office是Microsoft的专有产品,并且需要许可才能在最终用户的计算机上使用。 使用Office的部分原因是因为用户通常已经安装了Office,尤其是在商业环境中,但Microsoft还为Word,Excel和PowerPoint提供了免费的,未经许可的“查看器”,允许用户“打开,查看和打印” ”文件。 在某些情况下(例如向用户发送在线购买收据),文档的只读视图(尤其是易于保存的视图)就足够了。

最后,一些开发人员会指出,OpenOffice是Office 2003和Office 2007的开放源代码,平台可移植的竞争对手,OpenOffice中也提供了许多此类功能。问题已经安装了OpenOffice,那么应该以与我们在此讨论Office几乎相同的方式来考虑它。 但是,在充分尊重OpenOffice开发人员的同时,Microsoft在构建Office使其具有可扩展性方面具有丰富的经验,更重要的是,对于开发人员而言,这里有大量的知识和示例可供借鉴。

无论选择哪种办公生产力平台,使用用户已经安装的软件库作为富客户端应用程序的基础,都可以导致一些功能强大的解决方案和一些令人难以置信的用户。 尽管Office可能不是适合所有项目的客户端解决方案,但可以肯定的是,对于某些类型的系统,使用Office作为客户端要比尝试完全在Swing,SWT或Windows XP中完全构建某些东西容易得多。 AJAX。

资源资源

Office第二版运行时的Microsoft Visual Studio工具(VSTO 2005 SE)(x86) ,位于 http://www.microsoft.com/downloads
/details.aspx?familyid=f5539a90-dc41-4792-8ef8-f4de62ff1e81&displaylang=zh-CN是最新和最出色的VSTO程序包,可与Office 2007一起使用。 要构建VSTO扩展,您需要以下SDK。

适用于2007 Microsoft Office System的Microsoft Visual Studio 2005工具 , 网址为http://www.microsoft.com/downloads/details.aspx?familyid=
5E86CAB3-6FD6-4955-B979-E1676DB6B3CB&displaylang = zh-cn是实际的VSTO 2005 SE SDK本身(尽管两个网页之间的名称有所不同)。

Office 2003:智能标记SDK ,位于 http://www.microsoft.com/downloads/details.aspx?familyid=
c6189658-d915-4140-908a-9a0114953721&displaylang = zh-CN是Smart Tag SDK的下载页面,其主要好处是文档; 您也可以在http://msdn2.microsoft.com/zh-cn/library/bb190881(office.11​​).aspx上在线找到这些文档。 特别感兴趣的是“ Microsoft Office智能标记列表”部分,该部分完整记录了上面使用的XML格式。

用于Office的Visual Studio工具:卡特和利珀特(Addison-Wesley)的C#与Excel,Word,Outlook和InfoPath结合使用 。 负责VSTO本身的人强烈推荐这些文字。

构建Microsoft Office应用程序 ,通过....有些过时,本文更多关于建立老学校Visual Basic应用程序(前身为VSTO)扩展和应用的会谈,但它确实提供了一些有趣的见解的Office应用程序世界,特别是他编写的各种“用例”和解决方案。


1显然,我们也可以谈论Office 2007的新功能,但是由于它太新,它在市场上的渗透仍然相对较轻。 同样,我们可以讨论Office XP(Office 2003的前身)中存在的那些功能,但是这样做会限制我们可以使用的功能集,并且坦率地说,轶事证据表明,大多数使用Office的环境都已切换到Office 2003年至今。 与对产品功能和版本的所有讨论一样,无论是Office还是浏览器或Java应用程序服务器,都是警告。 使用Office构建应用程序时,请确保目标版本是您的用户社区已安装或可用的版本。
2通过邮购订购宠物的想法肯定有些令人毛骨悚然,但有时您会随心所欲。
3这实际上来自LISTS \ 1033子目录,该目录与语言和本地化有关。 区别在于1033子目录中定义的标签仅在带有英语标签的文档中可用。

翻译自: https://www.infoq.com/articles/rich-office-client-applications/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

office应用程序错误

office应用程序错误_富Office客户端应用程序相关推荐

  1. ssms应用程序错误_来自应用程序的查询计划与SSMS不同时的性能故障排除

    ssms应用程序错误 Troubleshooting performance issues in a database is one of the main jobs of DBAs and by n ...

  2. spoolsv应用程序错误_什么是“后台处理程序子系统应用程序”(spoolsv.exe),为什么它在我的PC上运行?...

    spoolsv应用程序错误 If you poke around in your Task Manager, you'll likely see an process named "Spoo ...

  3. bcoma 应用程序发生错误_我的电脑打开打开应用程序就会显示应用程序错误

    展开全部 内存不能read written常见原因 使用Windows操作系统的人有时会遇到这样的错误信息:"0X????????指令引用的0x00000000内存,该内存不能written ...

  4. h5 bootstrap 小程序模板_一道面试题小程序与H5的区别

    抛砖 此文是一道面试题,又不仅仅是一道面试题 面试题,在各个技术社区里都是一个永不落伍的话题,好像大多数人临面试前都会狂刷面试题,恨不得把所有面试题都看一遍,要说有用没,当然有用,因为大部分面试题确实 ...

  5. 校园网跑腿小程序源码 服务端+客户端+小程序

    介绍: 校园网跑腿小程序源码 需要准备 1.小程序 2.服务器(推荐配置2h4g3m) 3.域名(需要备案) 搭建教程 使用服务器搭建宝塔 安装pm2管理器 新建项目上传服务器接口 修改/pub/co ...

  6. 如何快速创建程序组_如何快速开发小程序

    随着小程序发展的越来越火,越来越多的企业.商家都开发了自己的小程序.在小程序开发的过程中,一部分客户会提出希望加快开发进度的要求.那么,如何快速开发小程序?下面不妨一起来了解一下. 选择成熟的小程序开 ...

  7. java的应用程序开发_开发一个Java应用程序(1)

    开发一个Java应用程序(1) App Engine上的Java Web应用程序通过Java Servlet标准接口与应用程序服务器交互.一个应用程序由一个或多个类组成,这些类都扩展自一个servle ...

  8. 移动应用程序开发_什么是移动应用程序开发?

    移动应用程序开发 One of the most popular forms of coding in the last decade has been the creation of apps, o ...

  9. python编写应用程序错误_运行简单的Python Flask web应用程序时出错

    嗨,伙计们,我在运行烧瓶代码时出错了.我在做Udemy的课程(python mega课程): 下列过帐代码和错误: 代码: 从烧瓶导入烧瓶,呈现模板app=Flask(__name__) @app.r ...

最新文章

  1. 通用解题法——回溯算法(理解+练习)
  2. 不懂编程可以自学python吗-我不会编程,也可能学会Python吗?
  3. hdu4907 水dp 或者set
  4. 丹麦见闻(转自王重合原创)
  5. 三国志战略版服务器维护延时,三国志战略版服务器爆满是多少人 爆满进不去怎么办...
  6. 【贪心】最大连续数列的和
  7. 支持向量机_支持向量机(SVM)说明及示例
  8. css3-10 css3中的边框样式有哪几种
  9. fastdfs fild_id
  10. containerd 拉取k8s.gcr.io/pause镜像i/o timeout
  11. Tesseract-OCR 图片数字识别的样本训练
  12. 让你的「文件传输助手」歇一歇吧,你完全有更实用的备忘录工具选择
  13. 解决slideup或slidedown图片抖动
  14. python小白学习第三节
  15. 微信小程序中使用lodash的问题
  16. 【学生系统】——登录界面
  17. 分享让PPT变高级的两个小技巧
  18. 反走崛起之路3:缘起之东部——波士顿
  19. lamp mysql 日志_实现lamp架构及统一日志管理
  20. Matlab图形(Figure)中使用差值光标提取数据

热门文章

  1. Linux命令--查看和修改文件的编码格式的方法
  2. 百度智能小程序这只蝴蝶正在掀起新一轮AI风暴
  3. linux dd 分区,Linux dd命令全面解析
  4. AJAX 异步请求数据
  5. 工信部总工谈物联网:奥巴马重视的下一代技术
  6. Linux下安装mysql5
  7. pymongo.errors.ServerSelectionTimeoutError
  8. CSS多栏布局-两栏布局和三栏布局
  9. 想活,想痛痛快快的活
  10. 《千与千寻》观后感 别忘了自己最初的样子