我正在尝试为 Word 创建一个加载项,以添加基于另存为
.xml
的 Word 文件的模板。
我正在做的是使用Word 2016创建我的模板。该模板包含正文、页眉和页脚。然后我将 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 的新手。关于如何直接从带有正文的文件添加页眉和页脚的任何建议都会很棒。
要在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();
});
});
document.setSelectedDataAsync()方法只会影响文档的正文。这是因为 Word 使用当前光标位置作为插入点。换句话说,这相当于手动粘贴到 Word 文档中(这也不会改变页眉或页脚)。
您可以使用特定于主机的 Word API 获得更精细的信息。这个较新的 API 支持管理Sections(页眉、页脚、正文)。一旦你有了一个部分,你就可以使用 insertOOXML() 来插入你的内容。