VSTO Office Word加载项开发概述

时间:2014-12-14 16:42:23

标签: c# vsto word-automation

C#专家和 ASP.NET 开发人员,我发现自己现在被分配到 Office加载项项目。幸运的是,我过去曾参与过几个 Excel加载项,但在我的脑海里一切都模糊不清,我从来没有机会以结构良好的方式学习它。

我很惊讶地注意到 SO 并且整个互联网缺少 VSTO Word DOM OpenXML <的正确文档缺乏可能是夸大其词,但它并不丰富或组织良好,这是肯定的。

所以我正在寻找的基本上它是概述,快速启动或备忘单,但是你想要称之为,包含Office开发重要部分的高级摘要。

PS:我也将在研究期间发表我的发现。

2 个答案:

答案 0 :(得分:2)

我的2美分

1)对于单词中的最新艺术字,您需要在Word中插入OpenXML数据。对于Excel \ Powerpoint,事情变得更容易,你可以使用互操作。

2)不要总是信任文档。如果你得到一个int而不是一个bool返回值,它主要是来自MsoTriState的值。例如大胆的财产应按照here的要求返回bool。但是,它返回int。所以,你必须把它像“(MsoTriState)returnedBoldValue”一样来表明这个整数实际意味着什么。

3)安装可能会很痛苦,考虑使用像Advanced Installer这样的现成产品(我发现它比其他产品便宜)。其他人也可能是好的或更好的。 4)表格样式可能是一种痛苦。 Here是您需要将其用于Powerpoint的奇怪ID的列表。

5)TextFrame2对Word仍然无效(即使文档可能另有说明)。它仅适用于Excel和Powerpoint。对于Word,您必须使用TextFrame。

6)不支持WPF。但是,经过一些研究,我能够让它工作得很好。您需要确保加载资源字典,它们也可以正常工作。

7)窗口协会是一个问题(父母 - 孩子)。 WindowInteropHelper是你的朋友。

现在,我会在这里停下来。我稍后会发布一些链接。

答案 1 :(得分:0)

文档级架构

  • 文档
  • 模板(与VSTO的文档基本相同)

文件“包含” 文档包含加载加载项所需的相关信息。不使用Registry。


应用程序级架构

  • 外接

直接插入Office并由Office加载。不可知的文件。它通过注册表项注册。


<强>丝带

Visual Designer支持。它会自动处理状态。


功能区X


它允许更好的自定义。这是XAML之类的。没有可视设计师。它不处理状态。您需要使用回调来自行处理状态。


Word DOM - 文档对象模型

   Application
      Documents
         StoryRanges
            Range
         Styles
            Style
      Windows
         Window
            Panes
               Pane

没有什么特别的,只是另一个DOM,与HTML非常相似。但是,它需要一段时间才能使用它,互联网上的信息并不像人们希望的那么丰富。


操纵DOM

  • 直接
  • VSTO控件:Windows窗体控件,主机控件

Windows窗体控件

  • 功能强大(例如支持.NET数据绑定)但是它们实际上不是Office的一部分,因此它们会像墙上的螺母一样。

主机控件(Interop Word对象周围的包装器)

  • 书签控制 - 旧方法,继续前进,没有什么可看的。
  • XML Node&amp; XML节点 - 已弃用。由于诉讼在美国被移除。
  • 内容控制 - 未来!支持将真实数据绑定到文档的XML部分中的隐藏XML数据字段。

<强>部署

  • Click-Once - 简单快捷。它为您添加了注册表项。但它不允许太多的定制。例如,您可以只为当前用户安装Click-Once项目。
  • Windows Installer,Installshield等。您需要将 .manifest .vsto 文件添加到输出中。您需要添加注册表项。