我正在尝试为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的新手。对于如何直接从文件中添加页眉和页脚,任何建议都会很棒。
答案 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();
});
});