【问题标题】:Office.js API - Add nested content control in word fileOffice.js API - 在 word 文件中添加嵌套内容控件
【发布时间】:2021-11-25 10:39:17
【问题描述】:

我正在为 Office Word 开发一个插件,我想添加允许用户以嵌套内容控件的形式按层次顺序添加内容的功能。

        let wordContentControl:any;
        Word.run(async context => {
           
            const range = context.document.getSelection();
            range.clear();
            wordContentControl = range.insertContentControl();
            wordContentControl.tag = "NameTest";
            wordContentControl.insertText("Sample", 'End');
            wordContentControl.cannotEdit = false;
            wordContentControl.appearance = 'BoundingBox';

            wordContentControl.font.color = 'red';
            await context.sync()


        }).catch((error) => {
            console.log(error);
        });
        Word.run(async context => {
            var contentControlsWithTag = context.document.contentControls.getByTag('NameTest');
            // Queue a command to load the tag property for all of content controls.
            context.load(contentControlsWithTag, 'tag');

            // Synchronize the document state by executing the queued commands,
            // and return a promise to indicate task completion.
            return context.sync().then(function () {
                if (contentControlsWithTag.items.length === 0) {
                    console.log('No content control found.');
                }
                else {
                    return context.sync()
                        .then(function () {
                           
                            context.sync();
                            var ccs = context.document.contentControls;
                            
                            ccs.load("NameTest");
                            
                            console.log("Nr cc: " + ccs.items.length);
                            let cc = ccs.items[0];

                        });
                }
            });
        });

这是我到目前为止所做的。但我无法找到在/嵌套内容控件中添加内容控件的方法。 你的帮助对我很有帮助。

【问题讨论】:

    标签: angular office365 office-js


    【解决方案1】:

    我测试并在内容控件中调用 insertContentControl 应该可以工作:

    var contentControl = context.document.getSelection().insertText('outer\n', Word.InsertLocation.start).insertContentControl();
    contentControl.insertText('inner', Word.InsertLocation.end).insertContentControl();
    

    请看看这是否适合你。

    【讨论】:

    • 在这里我正在进一步开发并尝试将样式添加到内容控件,它可以在 Word Online 上正常工作,但不能在 Word Desktop 上工作。出现错误:ERROR Error: Uncaught (in promise): InvalidArgument: InvalidArgument RichApi.Error: InvalidArgument at new n (word-win32-16.01.js:26) at n.o.processRequestExecutorResponseMessage (word-win32-16.01.js:26) at word-win32-16.01.js:26 at ZoneDelegate.invoke (zone.js:232) at Object.onInvoke (ng_zone.js:594) at ZoneDelegate.invoke (zone.js:231) at Zone.run (zone.js:114) at zone.js:502...
    • 那将是一个不同的问题。我看到你在stackoverflow.com/questions/70164988/… 发布了新问题;让我们看看是否有人可以提供帮助。
    • 这很奇怪,它的行为在网络浏览器(在线)和桌面(Windows)中完全不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多