我想将JavaScript API中的合并字段(<<xyz>>
)插入到单词表中。但是,我找不到用于Office Word Add-in的JavaScript API。
<?xml version="1.0" standalone="yes"?> <?mso-application progid="Word.Document"?><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"><w:body> <w:p w:rsidR="002715FD" w:rsidRDefault="002715FD"><w:fldSimple w:instr=" MERGEFIELD "Last_Name" "><w:r><w:rPr><w:noProof /></w:rPr><w:t>«Last_Name»</w:t></w:r></w:fldSimple></w:p><w:sectPr w:rsidR="00000000"> <w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/></w:sectPr> </w:body> </w:document> </pkg:xmlData></pkg:part></pkg:package>
以上是合并域的 xml
Word.run(function (context) {
// Queue a command to get the current selection and then
// create a proxy range object with the results.
var range = context.document.getSelection();
// Queue a commmand to insert OOXML in to the beginning of the range.
range.insertOoxml("PASTE ABOVE MERGE XML", Word.InsertLocation.start);
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
console.log('OOXML added to the beginning of the range.');
});
})
.catch(function (error) {
console.log('Error: ' +JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
我必须使用 angular 和 office js API 在 word 上创建一个 tskpane 插件,以使用 ooxml 在文本和形状矩形上插入合并字段
-
要插入到 Word 中的文本合并域 XML 模板
<?mso-application progid="Word.Document"?> <w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xml:space="preserve" w:embeddedObjPresent="no"> <w:body> <w:p> <w:fldSimple w:instr=" MERGEFIELD "${variableName}" "> <w:r> <w:rPr> <w:noProof /> </w:rPr> <w:t>«${variableName}»</w:t> </w:r> </w:fldSimple> </w:p> </w:body> </w:wordDocument>
-
具有合并域的形状/矩形的 XML 模板
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xml:space="preserve" w:embeddedObjPresent="no">
<w:body>
<w:p xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0">
<w:r>
<w:pict>
<v:rect style="position:absolute;margin-left:0pt;margin-top:0pt;width:344pt;height:193.5pt;color:white;z-index:251659264;visibility:visible;mso-wrap-style:square;mso-width-percent:0;mso-height-percent:0;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;mso-position-horizontal-relative:text;mso-position-vertical:absolute;mso-position-vertical-relative:text;mso-width-percent:0;mso-height-percent:0;mso-width-relative:margin;mso-height-relative:margin;v-text-anchor:middle" fillcolor="#4472c4 [3204]" strokecolor="#1f3763 [1604]" strokeweight="1pt">
<v:textbox>
<w:txbxContent>
<w:p>
<w:pPr>
<w:jc w:val="center" />
</w:pPr>
<w:fldSimple w:instr=" MERGEFIELD Image:${variableName} ">
<w:r>
<w:rPr>
<w:noProof />
</w:rPr>
<w:t>«Image:${variableName}»</w:t>
</w:r>
</w:fldSimple>
</w:p>
</w:txbxContent>
</v:textbox>
</v:rect>
</w:pict>
</w:r>
</w:p>
</w:body>
</w:wordDocument>
ooXML 插入方法
async insertMergeFieldOnDocument(xml: string) { return Word.run(async (context) => { let cursorOrSelection = context.document.getSelection(); context.load(cursorOrSelection); await context.sync(); cursorOrSelection.insertOoxml(xml, Word.InsertLocation.replace); await context.sync(); }); }