Office加载项将模板添加到Word

时间:2017-01-16 15:01:58

标签: ms-word office-js

我正在尝试为Word创建一个加载项,以便根据保存为.xml的Word文件添加模板。

我正在做的是使用Word 2016创建模板。模板包含Body,页眉和页脚。然后我将Word文件保存为Word XML文档(.xml

然后在我的VS项目中,我使用以下代码将模板添加到空白Word文件中:

var myOOXMLRequest = new XMLHttpRequest();
var myXML;
myOOXMLRequest.open('GET', fileName, false);
myOOXMLRequest.send();

if (myOOXMLRequest.status === 200) {
    myXML = myOOXMLRequest.responseText;
}

Office.context.document.setSelectedDataAsync(myXML, {
    coercionType: 'ooxml'
});

我的问题是我的模板正文已正确添加到新模板,但页眉和页脚不在那里。

我是ooxml和office.js的新手。对于如何直接从文件中添加页眉和页脚,任何建议都会很棒。

2 个答案:

答案 0 :(得分:0)

document.setSelectedDataAsync()方法只会影响文档正文。这是因为Word正在使用当前光标位置作为插入点。换句话说,它相当于手动粘贴到Word文档中(也不会改变页眉或页脚)。

您可以使用特定于主机的Word API进行更精细的操作。这个较新的API支持管理Sections(页眉,页脚,正文)。获得部分后,您可以使用insertOOXML()插入内容。

答案 1 :(得分:0)

要在Office.js中使用模板,您需要对.dotx模板文件进行base64编码(将其上传到base64encode.org并保存txt文件)。获得.txt文件后,将其添加到项目中,并告诉Word从该文件创建一个新文档,它将包含该模板的页眉/页脚/样式:

this.http.get('./assets/template.txt').subscribe(response => {
  Word.run(async context => {
    const myNewDoc = context.application.createDocument(response);
    context.load(myNewDoc);
    await context.sync();
    myNewDoc.open();
    await context.sync();
  });
});