【问题标题】:Manipulate status of links in Word document with OpenXML SDK使用 OpenXML SDK 处理 Word 文档中的链接状态
【发布时间】:2016-05-10 01:03:38
【问题描述】:

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

除其他外,还有“所选链接的更新方法”部分(字词可能不同,我是从德语版本翻译过来的),我有两个带有“自动”/“手动”的单选框。和一个复选框“锁定”。

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

任何人都知道,如何使用 OpenXML SDK 进行修改?

提前致谢,
弗兰克

【问题讨论】:

  • 这将有助于获得更多信息,情况不是 100% 清楚... 1) Word 版本? 2)全域码,不只是最后的开关; 3) 您引用的窗口(对话框)的屏幕截图(即使是德语)。

标签: ms-word openxml openxml-sdk


【解决方案1】:

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

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

在这种情况下,自动链接更新记录使用

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

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

链接是否被锁定记录在

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

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

Word 在显示文档时根据w:object 信息重构LINK 域代码。

但是,如果您将链接粘贴为文本,则 XML Word 记录将包含复杂的域代码结构,以 &lt;w:fldChar w:fldCharType='begin' /&gt; 元素开头。

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

&lt;w:fldChar w:fldCharType='begin' w:fldLock='1' /&gt;

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

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

【讨论】:

  • 酷,就是这样!非常感谢(特别是详细的解释!):)
猜你喜欢
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多