使用OpenXML SDK处理Word文档中链接的状态

时间:2016-04-27 13:46:02

标签: ms-word openxml openxml-sdk

我有一个Word文档,其中包含一些指向Excel文件中单元格的链接。在Word中,我可以获得一个上下文菜单,该菜单指向包含文档所有链接的窗口。在那里,我可以看到和操纵链接的属性。

除此之外,还有选择链接的部分"更新方法" (单词可能有所不同,我将其翻译成德语版本),我有两个带有"自动" /"手册"。一个复选框"已锁定"。

我想用OpenXML修改(尤其是锁定复选框)这些属性,但我没有找到该位置,模型中存储此信息的位置。我打印了OuterXML以获取已锁定已检查的链接以及未锁定已锁定的链接,但未在参数字段中找到任何差异(\ a \ f 5 \ h * MERGEFORMAT - 两者都有!)

任何人都知道,我如何使用OpenXML SDK修改它?

提前致谢,
弗兰克

1 个答案:

答案 0 :(得分:1)

Word有不同的方式来表示Office Open XML中的LINK,部分取决于链接的格式(例如,您是粘贴链接到对象还是纯文本)。

例如,如果将链接粘贴到“Microsoft Excel工作表对象”,虽然Word在文档中显示LINK字段,但XML实际上并不使用简单或更复杂的字段代码编码来记录字段代码。它实际上对<w:object>元素中的对象进行编码,该元素记录有关“形状”的信息,形状类型为<v:shapetype>,形状本身位于<v:shape>,有关OLE链接的信息<o:OLEObject>

在这种情况下,使用

记录自动链接更新

<o:OLEObject UpdateMode='Always'>用于自动链接

<o:OLEObject UpdateMode='OnCall'>用于手动链接。

链接是否已锁定记录在

<o:OLEObject><o:LockedField></o:LockedField<o:OLEObject>

(作为“假”或“”AFAICS)。

Word在显示文档时从w:object信息重建LINK字段代码。

但是,如果将链接粘贴为文本,则XML Word记录将包含复杂的字段代码构造,从<w:fldChar w:fldCharType='begin' />元素开始。

在这种情况下,链接被锁定的事实在w:fldLock属性中由值“1”表示,如果未锁定,则可能缺少该属性。例如

<w:fldChar w:fldCharType='begin' w:fldLock='1' />

在任何一种情况下,自动链接由字段代码中存在的\ a开关指示(在第一个例子的情况下重建)。如果没有\ a开关,则它不是自动链接。

这可能无法涵盖所有​​可能的情况,但应该为您提供有关在XML中查找位置的一些线索。