Word Addin:如何找到标题并在那里插入文字?

时间:2017-05-11 07:02:13

标签: office365 office-js word-addins

如何列出标题(标题1,标题2等),找到一个特定的(按名称)并在那里插入一个段落?它是否适用于新的Word JS API?

更新即可。谢谢里克!在此处粘贴代码,其功能

    await Word.run(async (context) => {
        try {
            let paragraphs = context.document.body.paragraphs;
            context.load(paragraphs, ['items']);

            // Synchronize the document state by executing the queued commands
            await context.sync();

            let listItems: HeroListItem[] = [];
            for (let i = 0; i < paragraphs.items.length; ++i) {
                let item = paragraphs.items[i];

                context.load(item, ['text', 'style', 'styleBuiltIn']);

                // Synchronize the document state by executing the queued commands
                await context.sync();

                if (item.style === 'Heading 1' || item.style === 'Heading 2') {
                    listItems.push({
                        primaryText: item.text + ' (' + item.style + ')'
                    });

                    if (item.text === 'Late days') {
                        let newLineItem = item.getNextOrNullObject();
                        context.load(item, ['text', 'style', 'styleBuiltIn']);
                        newLineItem.insertParagraph('<<<<<<<<<<<<<<My inserted text>>>>>>>>>>>>>>', 'After');
                    }
                }
            }

            this.setState({listItems: listItems});
        } catch (error) {
            this.setState({listItems: [{primaryText: 'error:' + error}]});
        }
    });

1 个答案:

答案 0 :(得分:0)

我假设当你说“名字”时你指的是标题的文字。 这可以做到。您的代码应加载所有段落。迭代它们并使用样式 styleBuiltIn 属性来查找样式名称以“标题”开头的那些。然后遍历那些查看 text 属性的人,找到你想要的那个。然后使用insertParagraph方法插入新段落。

更新:(响应下面的OP问题):您应该始终最小化context.sync的调用,因此您应该尽量避免在循环中调用它。尝试使用for循环将每个段落添加到数组中,然后context.load数组并执行context.sync。然后遍历数组并进行样式和文本检查。顺便说一下,在您添加到问题中的代码中,您的第三次调用context.load是不必要的。您也可以删除第二次context.load来电,前提是您将context.load的第一个电话重写为:

context.load(paragraphs, ['text', 'style']);

此外,您的代码不使用styleBuiltIn,因此您可以删除对它的所有引用。