javascript - 使用Javascript API在Word文档中的光标处插入表格

标签 javascript typescript office-js word-addins

问题

目前我正在开发一个 Word 插件,为客户提供模板功能。我想在光标附近放置一个包含单个单元格表的 ContentControl。 Javascript API 提供了此功能,如 here (ContentControl class) 所示。 。不幸的是,可以将表格放置在控件内容之前或之后,但不可能用表格替换内容。每当我尝试实现后者时,我都会收到 InvalidArgument 异常。

同样,我无法在选择的文档中直接添加表格(没有 ContentControl)。抛出同样的异常。然而,在这种情况下,指定哪个位置选项(之前、之后、替换内容等)并不重要。

使用的技术是React和Typescript。

<小时/>

内容控制表

private placeTableControl() {
    Word.run(function (context) {
        var values = [["Apple"]];

        let selectionRange = context.document.getSelection();
        let contentControl = selectionRange.insertContentControl();

        // This works
        // let table = contentControl.insertTable(1, 1, 'Start', values);

        // This doesn't
        let table = contentControl.insertTable(1, 1, 'Replace', values);

        return context.sync()
            .catch(function (error) {
                console.log(error);
            });
    });
}
<小时/>

添加不带 ContentControl 的表格

private placeTable() {
    Word.run(function (context) {
        var values = [["Apple"]];

        let selectionRange = context.document.getSelection();

        // This doesn't work.
        let table = selectionRange.insertTable(1, 1, 'Replace', values);

        // Neither does this.
        //let table = selectionRange.insertTable(1, 1, 'Start', values);

        // Or this.
        //let table = selectionRange.insertTable(1, 1, 'End', values);

        return context.sync()
            .catch(function (error) {
                console.log(error);
            });
    });
}
<小时/>

部分解决 - 建议 Cindy Meister

Cindy Meister 认为这可能与段落有关。表格应位于段落中。由于我错误地指定了简单数组而不是二维数组,因此我无法使其工作。这似乎现在正在发挥作用。我现在将尝试使其与内容控件一起使用。

private placeTable() {
    Word.run(function (context) {
        var values = [["Apple"]];

        var selectionRange = context.document.getSelection();

        var paragraph = selectionRange.insertParagraph("", "Before");

        return context.sync()
            .then(function () {
                paragraph.insertTable(1, 1, "Before", values);
            })
            .then(context.sync)
            .catch(function (error) {
                console.log(error);
            });
    });
}
<小时/>

类似问题

发现类似问题here .

最佳答案

Cindy Meister建议首先插入一个段落,因为表格不能插入包含其他内容的段落中。事实证明这是解决方案,请参阅下面的代码。所有作品均属于 Cindy Meister。

private placeTable() {

    Word.run(function (context) {
        var values = [["Apple"]];
        var selectionRange = context.document.getSelection();
        var paragraph = selectionRange.insertParagraph("", "Before");

        return context.sync()
            .then(function () {
                var table = paragraph.insertTable(1, 1, "Before", values);
                var contentControl = table.insertContentControl();
            })
            .then(context.sync)
            .catch(function (error) {
                console.log(error);
            });
    });

关于javascript - 使用Javascript API在Word文档中的光标处插入表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766549/

相关文章:

javascript - 引用错误: Excel is not defined

asp.net - jQuery 不能在我的主机上工作?

javascript - Fancybox 描述框

typescript - 处置 mobx @compulated react

exchangewebservices - 如何判断何时在 Outlook 加载项中使用 EWS 与 REST API

javascript - 在 Outlook 365 加载项中捕获 "onChange"事件

javascript - Jquery选择器语法

javascript - 如何使缩略图幻灯片仅显示缩略图图片

javascript - require() 导入抛出错误 : Cannot read property 'createsocket' of undefined

javascript - TypeScript 构造函数语法