1

我想将<<xyz>>JavaScript API 中的合并字段 ( ) 插入到单词表中。但是,我找不到 Office Word 加载项的 JavaScript API。

4

2 回答 2

4
<?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 &quot;Last_Name&quot; \"><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));
    }
});
于 2019-01-23T10:23:04.523 回答
0

我必须使用 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 &quot;${variableName}&quot; ">
                          <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();
      });
    }
    
于 2021-09-02T12:51:09.483 回答