由于office API限制(API仅限于富文本内容控件)。我们必须将内容控件作为OOXML对象插入。它正确插入了内容控件,但Office API无法将其识别为内容控件。例如,使用office API,如果调用方法来获取所有内容控件,则不会返回上面的内容控件。
如果您运行以下代码,它将不会返回那些插入的内容控件。
// Run a batch operation against the Word object model.
Word.run(function (context) {
// Create a proxy object for the content controls collection.
var contentControls = context.document.contentControls;
}
这是OOXML:
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
<pkg:xmlData>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml" />
</Relationships>
</pkg:xmlData>
</pkg:part>
<pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
<pkg:xmlData>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml">
<w:body>
<w:sdt>
<w:sdtPr>
<w:alias w:val="[REPLACE_THIS]" />
<w:id w:val="1382295294" />
<w:placeholder>
<w:docPart w:val="4D926923E99F45DBAF2203E4FEA73047" />
</w:placeholder>
<w:dataBinding w:xpath="[REPLACE_THIS]" w:storeItemID="{AFE97E21-6B3F-435F-8566-BD38F346ABE4}" />
<w:showingPlcHdr />
</w:sdtPr>
<w:sdtContent>
<w:p>
<w:r>
<w:t>[REPLACE_THIS]</w:t>
</w:r>
</w:p>
</w:sdtContent>
</w:sdt>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
</pkg:package>
由于Office API没有任何内置方法来获取这些内容控件并对其进行修改。我必须阅读文档的每个部分,获取OOXML,修改它并将其插回。有没有其他方法可以做到这一点?因为这是一个非常麻烦且容易出错的过程。
答案 0 :(得分:0)
我假设您正在使用OOXML插入其他类型的内容控件(即纯文本,组合,日期等),如果是这种情况,是的,在我们不支持的内容控件集合中,现在,富文本以外的其他类型的内容控件。这主要是因为Word Online中仅限于支持当前富文本的限制,我们提供的API可以保证多平台行为。计划是当它最终支持其他类型时,它们将作为集合的一部分包含在内(因此类型属性)。 所以,是的,现在唯一的出路是获取OOXML并通过XML处理其他类型的控件。如果用丰富的文本内容控件包装它们并且只获取包装器内容控件的OOXML,你可以定位你得到的OOXML。