获取Header的OOXML

时间:2018-03-19 16:00:19

标签: javascript office-js

我无法获得标题的OOXML。根据{{​​3}} getHeader“方法将返回Body类型。documentation有一个获取OOXML的方法。但看起来它没有返回OOXML。也许我我错过了什么?

这是我的代码:

Word.run(function (context) {

    // Create a proxy sectionsCollection object.
    var mySections = context.document.sections;

    // Queue a commmand to load the sections.
    context.load(mySections, 'body/style');

    // Synchronize the document state by executing the queued commands, 
    // and return a promise to indicate task completion.
    return context.sync().then(function () {

        // header
        var headerBody = mySections.items[0].getHeader("primary");

        // header OOXML
        //// NOT GETTING OOXML HERE
        var headerOOXML = headerBody.getOoxml();

        // Synchronize the document state by executing the queued commands, 
        // and return a promise to indicate task completion.
        return context.sync().then(function () {

            // modify header 
            var headerOOXMLValue = ModifyHeaderMethod(headerOOXML.value);

            headerBody.clear();
            headerBody.insertOoxml(headerOOXMLValue, 'Start');


            // Synchronize the document state by executing the queued commands,
            // and return a promise to indicate task completion.
            return context.sync().then(function () {
                callBackFunc({
                    isError: false
                });
            });

        });
    });
})

2 个答案:

答案 0 :(得分:2)

Office.js的“艺术”是为了尽量减少你所做的“同步”。我知道这是一种不必要的负担,但事实就是如此。

考虑到这一点,在这种情况下,您只需要一个同步。 此代码有效(假设您在doc中只有一个部分)。 顺便说一下,您可以在脚本实验室中使用此yaml进行尝试。

如果这不起作用,请说明这是Word for Windows(和什么版本)或在线,或Mac ...谢谢!

async function run() {
    await Word.run(async (context) => {
        let myOOXML = context.document.sections.getFirst()
            .getHeader("primary").getOoxml();

        await context.sync();
        console.log(myOOXML.value);

    });
}

答案 1 :(得分:0)

这里有很多额外的代码,但问题的关键是headerOOXML不会填充sync()

Word.run(function (context) {

    var header = context.document.sections // Grabv 
        .getFirst() // Get the first section
        .getHeader("primary"); // Get the header

    var ooxml = header.getOoxml();

    return context.sync().then(function () {
        console.log(ooxml.value);
    });
});